La connaissance du C # est-elle utile dans un système Linux?

44

Je connais le C # et j'aime basculer entre les systèmes et utiliser Linux. Puis-je utiliser C # pour créer des applications qui fonctionneront de manière native sous Linux? Que dois-je faire pour utiliser mes connaissances de C # sur un système Linux?

Notez que je suis spécialisé dans Unity3D, mais je veux toujours créer des applications Linux en C #.

Jacob
la source
1
KerbalSpaceProgram est écrit en Unity et fonctionne sous Win / Mac / Linux. Les plugins / mods pour KSP sont écrits en C # et peuvent être développés sous Win, Mac ou Linux. J'utilise principalement maintenant Mac au lieu de Linux pour $ REASONS, mais je développe des mods KSP sur cette plate-forme en C # et non sous Windows. Je vais probablement écrire du code C # autonome avec des tests xUnit en dehors de KSP et ce sera comme n'importe quel autre développement, mais je devrai simplement l'exécuter en mono. MechJeb a un exemple de Makefile construit sur Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (nécessite des dll de jeu KSP pour pouvoir les relier).
Lamont
3
Les applications C # ne fonctionnent généralement pas en mode natif .
Stop Harming Monica
@ OrangeDog Je sais, même sous Windows, vous devez installer .Net Framework. Si je dis "nativement", je veux dire sans aucune couche d'émulation ou de compatibilité. Je veux dire fondamentalement si Linux le prend en charge, quel que soit le nombre de programmes ou de packages à installer.
Jacob
2
Quelle est la pertinence de tout cela pour Ubuntu?
underscore_d
2
@underscore_d Je ne sais pas où vous avez entendu cela, mais ce n'est pas vrai. Voir Est-ce que les questions «non seulement spécifiques à Ubuntu» sont abordées? Beaucoup de questions sur Ask Ubuntu s’appliquent également à la grande majorité des systèmes GNU / Linux. Peut-être que quelqu'un trouvera une raison plausible de considérer cette question hors sujet, mais si tel est le cas, ce ne sera pas le cas. (BTW, ce n'avoir des réponses avec des informations spécifiques à Ubuntu Le deuxième paragraphe de mon poste est sur les paquets Ubuntu, il porte sur certains, mais pas tous, d' autres distros..)
Eliah Kagan

Réponses:

55

Très probablement, vous tomberez sur http://www.mono-project.com/

Comme le dit la page À propos de Mono :

Mono, la plate-forme de développement open source basée sur le .NET Framework, permet aux développeurs de créer des applications multiplates-formes avec une productivité améliorée. L'implémentation .NET de Mono est basée sur les normes ECMA pour C # et l' infrastructure de langage commun .

Les plates - formes prises en charge incluent Linux.

Finlandais
la source
2
Mono ... ça me dit quelque chose ... Ah oui, c'est sur cela que repose l'unité! Je ne savais pas que je pouvais l'utiliser séparément. Je pensais que cela faisait partie d'Unity3d.
Jacob
41
La dernière version de l'implémentation de Microsoft (.Net Core) prend également en charge Linux.
BlueRaja - Danny Pflughoeft
6
Mono implémente .net standard 2.0 (iirc) et pas seulement le coeur.
Casey
13
Cela aurait été une bonne réponse il y a quelques années. Maintenant, c'est à peu près obsolète.
Konrad Rudolph
2
Si vous utilisez une version récente d'Ubuntu, veuillez ne pas utiliser mono. Là où je travaille, presque tous les problèmes rencontrés lors de l’exécution d’applications C # sur de vieilles distributions Linux peuvent être expliqués avec l’affirmation: "à cause de mono". Les filtres d'exception perdent les traces de pile, les implémentations asynchrones qui sont des wrappers Task.Run, les fuites de mémoire sur tout le parcours et le manque de prise en charge de valgrind, de sorte que vous ne pouvez même pas diagnostiquer correctement la fuite.
Lukazoid
72

Oui, vous pouvez développer un logiciel sur Ubuntu, qui s'exécutera lui-même sur Ubuntu, en C #. Mono et .NET Core prennent tous deux en charge les systèmes GNU / Linux comme Ubuntu. (Vous pouvez également les utiliser sur d'autres distributions , telles que Debian, Raspbian, Fedora, CentOS, Arch, Gentoo, etc.). Le moteur de jeu Unity3D prend également en charge Ubuntu, comme vous le savez probablement. Unity3D embarque Mono .

Un certain nombre de paquets pour Ubuntu, installables à l'aide du gestionnaire de paquets d'Ubuntu à partir de sources de logiciels officiellement prises en charge par la communauté, sont écrits en C # et utilisent Mono. Cela inclut le lecteur de musique Banshee , l'application de prise de notes Tomboy , l'éditeur de graphiques raster Pinta et le gestionnaire de mots de passe KeePass (depuis la version 2).

La plupart des éditeurs de texte, tels que Gedit, Vim et Emacs, ont une coloration syntaxique pour C #. MonoDevelop et Visual Studio Code sont deux environnements de développement intégrés populaires fonctionnant sous Ubuntu et prenant en charge le développement C #.

Eliah Kagan
la source
10
Peut-être aussi mentionner Rider, l'IDE pour C # basé sur intellij idée qui contient toutes les fonctionnalités de ReSharper pour Visual Studio.
Wilbert
Vous voudrez peut-être ajuster cette réponse, de sorte que cela implique l'existence d'autres distributions de Linux. Puisqu'ils fourniront ou soutiendront également mono, vous voudrez peut-être être un peu plus neutre et inclusif.
user2066657
@ user2066657 Merci pour la suggestion; J'ai édité Je voulais expliquer clairement que Mono et .NET Core ne se limitaient pas à Ubuntu ("systèmes GNU / Linux comme Ubuntu"). Mais après mûre réflexion, je réalise que cela n’a peut-être pas été clair pour les lecteurs qui ne savaient pas déjà ce que j’essayais de leur dire. J'ai donc élargi cette partie. Je me rends bien compte que cette modification peut ne pas vous satisfaire: je l’ai rendue plus inclusive, mais pas plus neutre. Il est raisonnable que les publications sur ce site mettent en avant Ubuntu. La partie centrale, qui donne des exemples de programmes C # avec des paquets Ubuntu en aval, est délibérément axée sur Ubuntu.
Eliah Kagan
Si l’opérateur avait voulu poser des questions sur les systèmes d’exploitation autres que Ubuntu, il l’aurait probablement fait sous Unix et Linux .
M. Lister
@MrLister Oui, d'accord. Mais je pense que quelque chose a été gagné et rien n’a été perdu grâce aux éclaircissements que j’ai ajoutés. Je n'ai toutefois pas l'intention de réorganiser le poste dans son ensemble. Par exemple, j’ai envisagé de dire quelles distributions MonoDevelop et Visual Studio Code sont relativement faciles à installer et à utiliser, mais j’ai décidé de ne pas le faire, au motif que c’est un peu compliqué et que cela changerait le ton, la focalisation (et la longueur!)! ) du poste.
Eliah Kagan
20
  1. Vous pouvez maintenant développer des applications serveur sous Linux en utilisant C # ( .NET Core Framework), tout comme Java ou Python. Par applications serveur, j'entends principalement les applications Web et les applications de service Web (REST). Cela correspond parfaitement aux conteneurs Linux ( Docker / K8s) et aux clouds.
  2. Vous pouvez développer des applications de bureau avec C # à l'aide du toolkit Mono Framework (implémentation .NET) et GTK # (GtkSharp) (un wrapper de GTK). Il y a beaucoup de projets développés dessus. Ce framework a rencontré une certaine résistance de la part de la communauté Linux par le passé. Certaines distributions et utilisateurs ne voulaient pas d'applications Mono.
  3. Vous pouvez développer des jeux avec Unity Engine en utilisant C # sous Linux. Unity Editor est encore expérimental sur Linux.

Donc oui. Les connaissances sur C # peuvent être très utiles sur les systèmes Linux actuels.

Gorlok
la source
4
Vous pouvez également faire des applications de bureau dans .NET Core.
PmanAce
Vous pouvez également utiliser Avalonia, une nouvelle implémentation de plates-formes WPF pour créer des applications de bureau + mobiles sur Mac + Linux + Windows. Enfin une boîte à outils d'interface utilisateur non-ordures!
Chris Bordeman
2

Vous pouvez désormais même créer des applications multi-plateformes frontales basées sur le XAML (Linux, Mac, Windows, Android, iOS, UWP) utilisant .Net Core et un nouveau projet appelé Avalonia. Avalonia est en version bêta, mais fonctionne plutôt bien maintenant. Il est similaire à WPF, mais avec certaines améliorations de style comme CSS.

Je crois que sur les cibles Linux Avalonia, Gtk est cible, mais ils veulent passer à autre chose. C'est mentionné dans cette vidéo, mais personnellement, je ne comprenais pas ce qu'il avait dit: https://www.youtube.com/watch?v=WESJUJWBLJ0

Chris Bordeman
la source