Comment écrire des programmes en C# .NET, de les exécuter sur Linux/Wine/Mono?

Dans ce cas particulier, j'ai besoin de courir .compliqué NET application pour Linux. Par compliqué je veux dire - que le projet a été développé pendant 3 ans et je ne veux pas écrire de nouveau en java ou autre chose, et de développer et de soutenir à la fois, .NET et Java version ultérieure.

Application est de générer de la souris et du clavier des événements (en winapi/importation dll) et utilise le port série. J'ai aussi quelques minuteries pour les retards - pour le port de communication série (de 10 à 20ms, je n'ai pas besoin de grande précision ici).

Le reste est juste un tas de code simple, rien de spécial, pas bizarre de contrôles, pas de directx etc.

Que dois-je attendre? Ce travail sera?

Si une partie du code ne pourra pas - je peux changer un peu, rendre le réseau de connexion entre les deux .net application et de la mini-application sur linux que je peux écrire pour l'envoi de la souris et du clavier événements, ou de communication RS232.

En outre, je voudrais vous interroger sur la Vin et .NET en général:

Comment écrire .NET applications qui doivent s'exécuter sur Linux/Wine/Mono?

  • la version de cadre? (1.x, 2.0 ou puis-je utiliser 3.5?)
  • que devrais-je éviter (les importations de dll de windows? minuteries?)

Modifier/déplacé de commentaire:

J'ai vu mono quelques années, mais c'était terrible. Maintenant je vois qu'il growed jusqu'à, prend en charge LINQ, le Filetage et d'autres conditions difficiles. En plus maintenant aider a l'air vraiment sérieux. Im n'acceptant pas encore de réponse, parce que je vois que les gens continue d'afficher de très liens utiles. Si cette question reçoit beaucoup de +1 je vais le réécrire et peut-être que cela aidera d'autres personnes.

J'espère que quelqu'un ici ont une certaine expérience pratique .NET sur linux ici...

  • Mono est une implémentation open source de Microsoft .NET que vous pourriez probablement utiliser pour cela.
  • Merci. J'ai vu cela quelque part, mais je l'ai oublié. De toute façon j'ai encore besoin de quelques informations pratiques de quelqu'un qui a développé quelque chose qui fonctionne en Mono.
  • Si c'est la compatibilité qui est inquiétant, il y a le Mono Migration de l'Analyseur qui peut montrer les problèmes potentiels.
  • Grand merci @Cthulhu. Très utile lien.
  • Mono ne sera pas adapté si vous utilisez pInvokes pour accéder à la fonctionnalité au sein de Win32 - ce sera tout simplement hors échouer sur linux.
  • mais il mentionne la solution pour que, dans sa propre question. Il peut diviser le programme en deux parties, l'indépendant de la plateforme .NET une partie de la CIB à un composant natif qui est utilisée sur la base de la plate-forme, il est exécuté. Enfait il peut encore utiliser P/Invoke, il a juste besoin d'utiliser une classe pour windows et pour Linux

InformationsquelleAutor Kamil | 2012-10-27