Dans ce cas particulier, je dois exécuter l'application NET .complicated pour Linux. Par compliqué, je veux dire - ce projet a été développé pendant 3 ans et je ne veux pas l'écrire à nouveau en Java ou autre chose et développer et prendre en charge à la fois .NET et Java plus tard.
L'application génère des événements de souris et de clavier (par importation winapi/dll) et utilise le port série. J'ai également peu de temporisateurs pour les retards - pour la communication par port série (10-20 ms, je n'ai pas besoin d'une grande précision ici).
Le reste est juste beaucoup de code simple, rien de spécial, pas de contrôles étranges, pas de directx etc.
À quoi dois-je m'attendre? Est-ce que ça va marcher?
Si une partie du code échoue - je peux le changer un peu, établissez une connexion réseau entre l'application .net et la mini-application sur linux que je peux écrire pour envoyer des événements de souris et de clavier, ou une communication RS232.
De plus, je veux poser des questions sur Wine et .NET en général:
Comment écrire des applications .NET qui devraient fonctionner sur Linux/Wine/Mono?
Modifier/déplacé du commentaire:
J'ai vu du mono il y a quelques années, mais c'était terrible. Maintenant, je le vois grandi, prend en charge LINQ, Threading et d'autres fonctionnalités compliquées. De plus, maintenant l'aide semble vraiment sérieuse. Je n'accepte pas encore de réponse, car je vois que les gens affichent toujours des liens très utiles. Si cette question obtient plusieurs +1, je vais la réécrire et cela aidera peut-être les autres.
J'espère que quelqu'un ici aura une expérience pratique avec .NET sur linux ici ...
Avez-vous lu sur Mono.NET sur http://www.mono-project.com ?
Il vous permet d'écrire des applications .NET pour Linux avec des différences mineures par rapport à l'implémentation Microsoft. Je ne pense pas que Wine supportera les composants .NET.
Il suffit de lire la documentation avant et c'est parti.
PS: Cela vous donne également la liste de compatibilité entre mono et .NET. http://www.mono-project.com/Compatibility et MoMA (analyseur de migration mono) est un outil qui analysera toute application .NET déjà créée pour voir si son compatible à déployer sur linux.
Dans ce post, j'ai raccourci et combiné toutes les informations que j'ai apprises des autres dans ce fil.
L'implémentation open source de .NET pour Linux est appelée Mono .
La compatibilité est bien documentée (voir les liens ci-dessous). Mono prend en charge LINQ, le filetage et certaines autres fonctionnalités compliquées.
Il prend même en charge InteropServices. Il est possible d'utiliser DllImport sur la bibliothèque linux (!), Comme libc.so
par exemple.
Mono peut prendre en charge Android et iOS (ils sont basés sur Linux, non?)
Il existe un outil d'analyse de compatibilité mono appelé MoMA (Mono Migration Analyzer)
L'outil Mono Migration Analyzer (MoMA) vous aide à identifier les problèmes que vous pouvez rencontrer lors du portage de votre application .Net vers Mono. Il aide à localiser les appels spécifiques à la plateforme (P/Invoke) et les zones qui ne sont pas encore prises en charge par le projet Mono.
Liens utiles:
Nous avons quelques applications .net qui fonctionnent sur Windows ou Linux avec Mono.
Vous pouvez développer dans VisualStudio si vous le souhaitez, il n'est pas nécessaire d'utiliser l'environnement de développement Mono. Seules les bibliothèques mono d'exécution sont requises pour exécuter les applications .net sous Linux.
Nous utilisons la cible net 2.0 pour compiler ces applications dans VisualStudio, car mono est presque 100% compatible avec .net 2.0. Mono implémente également APIS à partir de versions ultérieures de .net, mais pas toutes et pas aussi complètes. Si vous utilisez des fonctionnalités de versions plus récentes que 2.0, vous devez vérifier si elles sont prises en charge ou utiliser l'outil d'analyse de compatibilité mono. Vous pouvez également utiliser Mono develop au lieu de Visual Studio, mon prédécesseur le faisait; le résultat est à peu près le même, et je préfère utiliser Visual Studio à la place.
Nous n'avons trouvé aucun problème majeur, et les applications sont relativement complexes, fortement multithread, E/S asynchrones, WinForms, sockets, ports série, etc.
Certaines applications ont utilisé des bibliothèques .net qui ne sont pas disponibles dans MS .net, mais toutes celles-ci peuvent également être installées sur Windows afin qu'il n'y ait aucun problème pour exécuter ces applications dans Windows.
J'espère que cela pourra aider,
Vous pouvez développer des applications C # sur Linux avec .NET Core: https://www.Microsoft.com/net/core
Après l'avoir installé, tapez dotnet new
dans votre terminal pour obtenir une liste de modèles d'application pouvant être générés pour que vous puissiez commencer.
À partir de .NET Core 2.0 aujourd'hui, voici la liste:
Templates Short Name Language Tags
--------------------------------------------------------------------------------------------------------
Console Application console [C#], F#, VB Common/Console
Class library classlib [C#], F#, VB Common/Library
Unit Test Project mstest [C#], F#, VB Test/MSTest
xUnit Test Project xunit [C#], F#, VB Test/xUnit
ASP.NET Core Empty web [C#], F# Web/Empty
ASP.NET Core Web App (Model-View-Controller) mvc [C#], F# Web/MVC
ASP.NET Core Web App razor [C#] Web/MVC/Razor Pages
ASP.NET Core with Angular angular [C#] Web/MVC/SPA
ASP.NET Core with React.js react [C#] Web/MVC/SPA
ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA
ASP.NET Core Web API webapi [C#], F# Web/WebAPI
global.json file globaljson Config
Nuget Config nugetconfig Config
Web Config webconfig Config
Solution File sln Solution
Razor Page page Web/ASP.NET
MVC ViewImports viewimports Web/ASP.NET
MVC ViewStart viewstart Web/ASP.NET
La dernière version actuelle est 2.0.