La conoscenza di C # è utile in un sistema Linux?


44

Conosco C # e mi piace passare da un sistema all'altro e usare Linux. Posso usare C # per creare applicazioni che funzioneranno in modo nativo su Linux? Cosa devo fare per sfruttare la mia conoscenza di C # in un sistema Linux?

Nota che sono specializzato in Unity3D, ma voglio comunque creare applicazioni Linux usando C #.


1
KerbalSpaceProgram è scritto in Unity e funziona su Win / Mac / Linux. Plugin / Mod per KSP sono scritti in C # e possono essere sviluppati su Win, Mac o Linux. Uso principalmente Mac ora invece di Linux per $ REASONS, ma faccio lo sviluppo di mod KSP su quella piattaforma in C # e non su Windows. Probabilmente scriverò presto un codice C # autonomo con test xUnit al di fuori di KSP e sarà proprio come qualsiasi altro sviluppo, ma dovrò semplicemente eseguirlo in mono. MechJeb ha un Makefile di esempio che si basa su Mac + Linux: github.com/MuMech/MechJeb2/blob/master/Makefile (richiede il collegamento di dll del gioco KSP).
lamont,

3
Le applicazioni C # di solito non vengono eseguite in modo nativo da nessuna parte.
Smetti di fare del male a Monica il

@OrangeDog Lo so, anche su Windows è necessario installare il framework .Net. Se dicessi "nativamente" intendo senza alcun livello di emulazione o compatibilità. In pratica intendo se Linux lo supporta, indipendentemente da quanti programmi o pacchetti è necessario installare.
Jacob,

2
Che rilevanza ha questo per Ubuntu?
underscore_d

2
@underscore_d Non so dove l'hai sentito, ma non è vero. Vedi Le domande "non solo specifiche di Ubuntu" sono in tema? Molte, molte domande su Ask Ubuntu si applicano ugualmente alla stragrande maggioranza dei sistemi GNU / Linux. Forse qualcuno troverà una ragione plausibile per considerare questa domanda fuori tema, ma in tal caso, non sarà così. (A proposito, questo non ha risposte con informazioni Ubuntu-specifiche, secondo comma, della mia post è sui pacchetti di Ubuntu, ma trasporta oltre ad alcuni, ma non tutti, altre distribuzioni..)
Elia Kagan

Risposte:


55

Molto probabilmente ti imbatterai in http://www.mono-project.com/

Come dice la pagina Informazioni su Mono :

Mono, la piattaforma di sviluppo open source basata su .NET Framework, consente agli sviluppatori di creare applicazioni multipiattaforma con una maggiore produttività degli sviluppatori. L'implementazione .NET di Mono si basa sugli standard ECMA per C # e Common Language Infrastructure .

Le piattaforme supportate includono Linux.


2
Mono ... suona familiare ... Oh sì, questo è ciò su cui si basa l'unità! Non avevo idea di poterlo usare separatamente. Ho pensato che facesse parte di Unity3d.
Jacob

41
L'ultima versione dell'implementazione di Microsoft (.Net Core) supporta anche Linux.
BlueRaja - Danny Pflughoeft

6
Mono implementa .net standard 2.0 (iirc) non solo core.
Casey,

13
Questa sarebbe stata una bella risposta qualche anno fa. Ora è praticamente obsoleto.
Konrad Rudolph,

2
Se stai usando una versione recente di Ubuntu, per favore, per favore non usare mono, ha così tanti bug e implementazioni scadenti, usa core .net. Dove lavoro, quasi tutti i problemi che abbiamo quando si eseguono applicazioni C # su vecchie distribuzioni Linux possono essere spiegati con l'affermazione: "a causa di mono". Filtri delle eccezioni che perdono tracce dello stack, implementazioni asincrone che sono Task. Avvolge le bobine, perdite di memoria in tutto lo scatto e mancanza di supporto valgrind in modo da non poter nemmeno diagnosticare correttamente la perdita.
Lukazoid

72

Sì, puoi sviluppare software su Ubuntu, che verrà eseguito su Ubuntu, in C #. Sia Mono che .NET Core supportano sistemi GNU / Linux come Ubuntu. (Puoi usarli anche su altre distro , come Debian, Raspbian, Fedora, CentOS, Arch, Gentoo e così via.) Il motore di gioco Unity3D supporta anche Ubuntu, come probabilmente saprai. Unity3D incorpora Mono .

Un certo numero di pacchetti per Ubuntu, installabili con il gestore pacchetti di Ubuntu da fonti software ufficialmente supportate dalla comunità, sono scritti in C # e usano Mono. Ciò include il lettore musicale Banshee , l'app per gli appunti Tomboy , l'editor grafico raster Pinta e il gestore di password KeePass (dalla versione 2).

La maggior parte degli editor di testo, come Gedit, Vim ed Emacs, hanno l'evidenziazione della sintassi per C #. MonoDevelop e Visual Studio Code sono due popolari ambienti di sviluppo integrato che funzionano su Ubuntu e supportano lo sviluppo di C #.


10
Forse anche menzionare Rider, l'IDE di Intellij basato su idee per C # che contiene tutte le funzionalità di ReSharper per Visual Studio.
Wilbert,

Potresti voler mettere a punto questa risposta, quindi implica che esistono altre distribuzioni di Linux. Dal momento che forniranno o supporteranno anche mono, potresti voler essere un po 'più neutrale e inclusivo.
user2066657

@ user2066657 Grazie per il suggerimento; Ho modificato. Avevo intenzione di chiarire come Mono e .NET Core non fossero limitati a Ubuntu ("sistemi GNU / Linux come Ubuntu"). Ma a ulteriore considerazione, mi rendo conto che potrebbe non essere stato chiaro ai lettori che non sapevano già cosa stavo cercando di dire loro. Quindi ho ampliato quella parte. Mi rendo conto che questa modifica potrebbe non soddisfarti: l'ho resa più inclusiva, ma non più neutra. È ragionevole che i post su questo sito enfatizzino Ubuntu. La parte centrale, che fornisce esempi di programmi C # con pacchetti Ubuntu a valle, è deliberatamente focalizzata su Ubuntu.
Eliah Kagan,

Se l'OP avesse voluto chiedere informazioni su sistemi operativi non Ubuntu, probabilmente lo avrebbero chiesto in Unix e Linux .
Lister,

@MrLister Sì, d'accordo. Ma penso che si ottenga qualcosa, e nulla di perso, grazie al chiarimento che ho aggiunto. Tuttavia, non ho intenzione di riorganizzare il post nel suo insieme. Ad esempio, ho pensato di dire qualcosa su quali distro MonoDevelop e Visual Studio Code sono ragionevolmente facili da installare e da utilizzare, ma ho deciso di non farlo, per il fatto che è un po 'complicato e finirebbe per cambiare il tono e lo stato (e la lunghezza! ) del posto.
Eliah Kagan,

20
  1. Ora puoi sviluppare applicazioni server su Linux usando C # ( .NET Core framework), come puoi usare Java o Python. Per applicazioni server intendo principalmente applicazioni web e applicazioni web service (REST). Questo si adatta perfettamente ai container Linux ( Docker / K8s) e ai cloud.
  2. È possibile sviluppare applicazioni desktop con C # utilizzando Mono Framework (un'implementazione .NET) e GTK # (GtkSharp) toolkit (un wrapper di GTK). Ci sono molti progetti sviluppati su di esso. Questo framework ha avuto una certa resistenza da parte della comunità di Linux in passato. Alcune distribuzioni e utenti non volevano applicazioni Mono.
  3. Puoi sviluppare giochi con Unity Engine usando C # su Linux. Unity Editor è ancora sperimentale su Linux.

Quindi sì. La conoscenza di C # può essere molto utile sui sistemi Linux oggi.


4
Puoi anche eseguire applicazioni desktop in .NET Core.
PmanAce,

Puoi anche utilizzare Avalonia, una reimplementazione WPF multipiattaforma per realizzare app mobili + desktop su Mac + Linux + Windows. Finalmente un toolkit UI non garbage!
Chris Bordeman,

2

Ora puoi persino realizzare app cross-platform front-end basate su XAML (Linux, Mac, Windows, Android, iOS, UWP) usando .Net Core e un nuovo progetto chiamato Avalonia. Avalonia è in beta, ma ora funziona abbastanza bene. È simile a WPF, ma con alcuni CSS come miglioramenti allo stile.

Credo che su Linux Avalonia abbia come target Gtk al momento, ma vogliono passare a qualcos'altro. È menzionato in questo video, ma personalmente non riuscivo a capire cosa dicesse: https://www.youtube.com/watch?v=WESJUJWBLJ0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.