web-dev-qa-db-fra.com

Comment exécuter un projet C # sous Linux

Connaissez-vous des façons de lancer un projet C # sous Linux? Existe-t-il des framewoks ou des bibliothèques pour cela?

20
user101375

Vous recherchez le Mono Project - une implémentation multi-plateforme (mais principalement destinée à Linux) du .NET Framework et du CLR. Il est capable d'exécuter des fichiers binaires compilés pour le CLR (MS .NET) ou créer ses propres binaires Linux natifs.

Le projet est en cours depuis quelque temps déjà, et sa version actuelle (2.4) est très utilisable, même pour objectifs de production . Voir le feuille de route du projet pour plus de détails sur les principales caractéristiques et jalons des versions actuelles et futures). .

Détails sur l'état actuel:

La grande majorité de la bibliothèque de classes de base (BCL) est disponible sur Mono, à l'exception de certains éléments .NET 3.0/3.5, tels que WPF (qui prend actuellement en charge un minimum de ressources) et WCF (une prise en charge quasi inexistante). Cependant, Silverlight 2.0 est pris en charge via le projet Moonlight , et les progrès sont satisfaisants. La fonctionnalité WinForms (qui utilise GTK # en tant que backend) est toutefois assez complète, à ma connaissance.

L'implémentation du langage C # 3.0 est effectivement terminée, y compris les fonctionnalités de C # 3.0 telles que expressions lambda _, LINQ et propriétés automatiques. Je pense que le compilateur C # est mature au point que son efficacité est au moins comparable à celle du compilateur MS, même si elle ne correspond pas encore à certains égards. Ce qui est plutôt cool (et unique) au sujet du compilateur Mono C # est c’est-à-dire qu’il offre maintenant un service de compilation _ - en d’autres termes, une véritable compilation dynamique à partir de code (sans utiliser CodeDOM). C’est quelque chose que MS ajoutera peut-être uniquement dans .NET 5.0.

31
Noldorin

Comme d'autres l'ont déjà dit, vous pouvez exécuter des applications .NET sur Mono. Si vos applications utilisent Platform Invocation (P/Invoke) pour appeler du code natif, vous pouvez rencontrer des problèmes s'il n'y a pas d'implémentation Mono de la bibliothèque native. Pour vérifier si votre application le fait (ou utilise des API qui n'ont pas encore été implémentées dans Mono), vous pouvez utiliser le Mono Migration Analyzer (MoMA) .

5
Rytmis

Pour ceux qui rencontrent cette question post 2016 , pouvez utiliser .NET Core - Une plate-forme de développement open-source et polyvalente gérée par Microsoft et la communauté .NET sur GitHub. Multiplate-forme (prenant en charge Windows, macOS et Linux), il peut être utilisé pour créer des applications pour périphériques, cloud et IoT.

1
Luame Ludik