Sind Kenntnisse in C # in einem Linux-System von Nutzen?

44

Ich kenne C # und wechsle gerne zwischen Systemen und benutze Linux. Kann ich mit C # Anwendungen erstellen, die nativ unter Linux funktionieren? Was kann ich tun, um meine C # -Kenntnisse in einem Linux-System zu nutzen?

Beachten Sie, dass ich auf Unity3D spezialisiert bin, aber trotzdem Linux-Anwendungen mit C # erstellen möchte.

Jakob
quelle
1
KerbalSpaceProgram ist in Unity geschrieben und läuft unter Win / Mac / Linux. Plugins / Mods für KSP sind in C # geschrieben und können unter Win, Mac oder Linux entwickelt werden. Ich benutze jetzt hauptsächlich Mac anstelle von Linux für $ REASONS, aber ich entwickle KSP-Mods auf dieser Plattform in C # und nicht in Windows. Ich werde wahrscheinlich bald einen eigenständigen C # -Code mit xUnit-Tests außerhalb von KSP schreiben und es wird genau wie bei jeder anderen Entwicklung sein, aber ich muss es nur unter Mono ausführen. MechJeb verfügt über ein Beispiel-Makefile, das auf Mac + Linux aufbaut: github.com/MuMech/MechJeb2/blob/master/Makefile (zum Verknüpfen sind KSP-Spieledlls erforderlich).
Lamont
3
C # -Anwendungen werden normalerweise nativ nicht ausgeführt .
Hören Sie auf, Monica am
@OrangeDog Ich weiß, auch unter Windows müssen Sie .NET Framework installieren. Wenn ich "nativ" sage, meine ich ohne Emulations- oder Kompatibilitätsschicht. Grundsätzlich meine ich, wenn Linux es unterstützt, egal wie viele Programme oder Pakete Sie installieren müssen.
Jacob
2
Welche Relevanz hat dies für Ubuntu?
Underscore_d
2
@underscore_d Ich weiß nicht, wo Sie das gehört haben, aber es ist nicht wahr. Siehe Sind "nicht nur Ubuntu-spezifische" Fragen zum Thema? Viele, viele Fragen zu Ask Ubuntu gelten gleichermaßen für die große Mehrheit der GNU / Linux-Systeme. Vielleicht findet jemand einen plausiblen Grund, diese Frage als nicht thematisch zu betrachten, aber wenn ja, wird es nicht so sein. (BTW, dies nicht haben Antworten mit Ubuntu-spezifische Informationen Der zweite Absatz von meinem eigenen Beitrag ist über Ubuntu - Pakete, es überträgt sich auf einige, aber nicht alle anderen Distributionen..)
Eliah Kagan

Antworten:

55

Höchstwahrscheinlich stoßen Sie auf http://www.mono-project.com/

Auf der Seite " Über Mono " heißt es:

Mit Mono, der Open Source-Entwicklungsplattform auf Basis von .NET Framework, können Entwickler plattformübergreifende Anwendungen mit verbesserter Entwicklerproduktivität erstellen. Die .NET-Implementierung von Mono basiert auf den ECMA-Standards für C # und die Common Language Infrastructure .

Die unterstützten Plattformen umfassen Linux.

Finn
quelle
2
Mono ... kommt mir bekannt vor ... Oh ja, darauf basiert die Einheit! Ich hatte keine Ahnung, dass ich es separat verwenden kann. Ich dachte, es ist Teil von Unity3d.
Jacob
41
Die neueste Version der Microsoft-Implementierung (.Net Core) unterstützt auch Linux.
BlueRaja - Danny Pflughoeft
6
Mono implementiert .net Standard 2.0 (iirc) nicht nur Core.
Casey
13
Dies wäre vor ein paar Jahren eine schöne Antwort gewesen. Jetzt ist es ziemlich veraltet.
Konrad Rudolph
2
Wenn Sie eine neuere Version von Ubuntu verwenden, verwenden Sie bitte nicht Mono. Es hat so viele Fehler und schlechte Implementierungen. Verwenden Sie den .net-Kern. Wo ich arbeite, kann fast jedes Problem, das wir beim Ausführen von C # -Anwendungen auf alten Linux-Distributionen haben, mit der Anweisung "because of mono" erklärt werden. Ausnahmefilter, die Stack-Traces verlieren, asynchrone Implementierungen, die Task.Run-Wrapper sind, Speicherverluste im gesamten Shot und mangelnde Valgrind-Unterstützung, sodass Sie das Leck nicht einmal richtig diagnostizieren können.
Lukazoid
72

Ja, Sie können Software unter Ubuntu entwickeln, die selbst unter Ubuntu in C # ausgeführt wird. Sowohl Mono als auch .NET Core unterstützen GNU / Linux- Systeme wie Ubuntu. (Sie können sie auch in anderen Distributionen wie Debian, Raspbian, Fedora, CentOS, Arch, Gentoo usw. verwenden.) Die Unity3D-Spiele-Engine unterstützt auch Ubuntu, wie Sie wahrscheinlich wissen. Unity3D bettet Mono ein .

Eine Reihe von Paketen für Ubuntu, die mit Ubuntus Paketmanager aus offiziell von der Community unterstützten Softwarequellen installiert werden können, sind in C # geschrieben und verwenden Mono. Dazu gehören der Musik-Player Banshee , die Notetaking-App Tomboy , der Rastergrafik-Editor Pinta und der Passwort-Manager KeePass (seit Version 2).

Die meisten Texteditoren wie Gedit, Vim und Emacs verfügen über Syntaxhervorhebungen für C #. MonoDevelop und Visual Studio Code sind zwei beliebte integrierte Entwicklungsumgebungen, die unter Ubuntu ausgeführt werden und die C # -Entwicklung unterstützen.

Eliah Kagan
quelle
10
Erwähnen Sie vielleicht auch Rider, die auf intellij idea basierende IDE für C #, die alle Funktionen von ReSharper für Visual Studio enthält.
Wilbert
Möglicherweise möchten Sie diese Antwort optimieren, damit impliziert wird, dass andere Linux-Distributionen vorhanden sind. Da sie auch Mono bieten oder unterstützen, möchten Sie vielleicht ein bisschen neutraler und integrativer sein.
user2066657
@ user2066657 Danke für den Vorschlag; Ich habe bearbeitet. Ich wollte klarstellen, dass Mono und .NET Core nicht auf Ubuntu beschränkt sind ("GNU / Linux-Systeme wie Ubuntu"). Bei näherer Betrachtung ist mir jedoch klar, dass dies für Leser, die noch nicht wussten, was ich ihnen sagen wollte, möglicherweise nicht klar war. Also habe ich diesen Teil erweitert. Mir ist klar, dass dieser Schnitt Sie möglicherweise nicht zufrieden stellt: Ich habe ihn integrativer, aber nicht neutraler gestaltet. Es ist vernünftig, dass Beiträge auf dieser Site Ubuntu betonen. Der mittlere Teil, der Beispiele für C # -Programme mit nachgeschalteten Ubuntu-Paketen enthält, ist bewusst auf Ubuntu ausgerichtet.
Eliah Kagan
Wenn das OP nach Nicht-Ubuntu-Betriebssystemen hätte fragen wollen, hätten sie wahrscheinlich in Unix und Linux gefragt .
Herr Lister
@MrLister Ja, stimmte zu. Aber ich denke, dass durch die Klarstellung, die ich hinzugefügt habe, etwas gewonnen und nichts verloren wird. Ich habe jedoch nicht vor, den Post als Ganzes umzurüsten. Ich dachte zum Beispiel darüber nach, welche Distributionen von MonoDevelop und Visual Studio Code relativ einfach zu installieren und zu verwenden sind, entschied mich jedoch dagegen, da dies etwas kompliziert ist und den Ton und den Fokus (und die Länge) ändern würde. ) der Post.
Eliah Kagan
20
  1. Sie können jetzt Serveranwendungen unter Linux mit C # ( .NET Core Framework) entwickeln, wie Sie es mit Java oder Python tun können. Mit Serveranwendungen meine ich hauptsächlich Webanwendungen und Webdienstanwendungen (REST). Dies passt perfekt zu Linux-Containern ( Docker / K8s) und Clouds.
  2. Sie können Desktopanwendungen mit C # unter Verwendung des Mono Framework (eine .NET-Implementierung) und des GTK # (GtkSharp) -Toolkits (ein Wrapper von GTK) entwickeln. Es wurden viele Projekte entwickelt. Dieses Framework hat in der Vergangenheit in der Linux-Community einigen Widerstand geleistet. Einige Distributionen und Benutzer wollten keine Mono-Anwendungen.
  3. Sie können Spiele mit der Unity Engine unter Linux mit C # entwickeln. Unity Editor ist noch experimentell unter Linux.

Also ja. Kenntnisse in C # können heutzutage auf Linux-Systemen sehr nützlich sein.

Gorlok
quelle
4
Sie können Desktopanwendungen auch in .NET Core ausführen.
PmanAce
Sie können auch Avalonia verwenden, eine plattformübergreifende WPF-Neuimplementierung, um Mobile + Desktop-Apps unter Mac + Linux + Windows zu erstellen. Endlich ein Non-Garbage-UI-Toolkit!
Chris Bordeman vor
2

Sie können jetzt sogar XAML-basierte plattformübergreifende Front-End-Apps (Linux, Mac, Windows, Android, iOS, UWP) mit .Net Core und einem neuen Projekt namens Avalonia erstellen. Avalonia ist in der Beta-Version, funktioniert aber jetzt ziemlich gut. Es ähnelt WPF, bietet jedoch einige CSS-ähnliche Verbesserungen beim Styling.

Ich glaube, Avalonia zielt derzeit auf Linux Gtk ab, aber sie wollen zu etwas anderem übergehen. Es ist in diesem Video erwähnt, aber ich persönlich konnte nicht verstehen, was er sagte: https://www.youtube.com/watch?v=WESJUJWBLJ0

Chris Bordeman
quelle