GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui il codice C# sul terminale Linux

Ovviamente si può fare e il processo è estremamente semplice.

Qui sto spiegando i passaggi per Ubuntu Linux.

Terminale aperto:

Ctrl + Alt + T

Digita

gedit hello.cs

Nel gedit finestra che si apre incolla il seguente codice di esempio:

using System;
class HelloWorld {
  static void Main() {
    Console.WriteLine("Hello World!");
  }
}

Salva e chiudi gedit.

Di nuovo nel terminale digita:

sudo apt update
sudo apt install mono-complete
mcs -out:hello.exe hello.cs
mono hello.exe

Uscita:

Hello World!

NOTA:la risposta di @adabru di seguito rende la mia soluzione obsoleta a meno che tu non stia utilizzando una piattaforma mono più vecchia.

Gli script C# possono essere eseguiti dalla riga di comando bash proprio come gli script Python e Perl, ma ci vuole un po' di magia bash per farlo funzionare. Come ha detto Corey sopra, devi prima installare Mono sulla tua macchina. Quindi, salva il seguente codice in uno script bash eseguibile sulla tua macchina Linux:

if [ ! -f "$1" ]; then
dmcs_args=$1
shift
else
dmcs_args=""
fi
script=$1
shift
input_cs="$(mktemp)"
output_exe="$(mktemp)"
tail -n +2 $script > $input_cs
dmcs $dmcs_args $input_cs -out:${output_exe} && mono $output_exe [email protected]                                                                          
rm -f $input_cs $output_exe

Supponendo che tu abbia salvato lo script precedente come /usr/bin/csexec, segue un esempio di "script" C#:

#!/usr/bin/csexec -r:System.Windows.Forms.dll -r:System.Drawing.dll                                                                   
using System;                                                                                                                                
using System.Drawing;                                                                                                                        
using System.Windows.Forms;                                                                                                                  
public class Program                                                                                                                         
{                                                                                                                                            
    public static void Main(string[] args)                                                                                                     
    {                                                                                                                                          
        Console.WriteLine("Hello Console");                                                                                                      
        Console.WriteLine("Arguments: " + string.Join(", ", args));                                                                              
        MessageBox.Show("Hello GUI");                                                                                                            
    }                                                                                                                                          
}                                                                                                                                            

Salva il codice sopra in un file come "hello.cs", rendilo eseguibile, modifica la prima riga in modo che punti allo script bash salvato in precedenza, quindi eseguilo, dovresti vedere il seguente output insieme a una finestra di dialogo che dice "Ciao GUI":

bash-4.2$ ./hello.cs foo bar baz
Hello Console
Arguments: foo, bar, baz

Tieni presente che la GUI richiede che tu sia al livello di esecuzione 5. Ecco uno script C# più semplice che viene eseguito su una console di puro testo:

#!/usr/bin/csexec                                                                                                                     
using System;                                                                                                                                
public class Program                                                                                                                         
{                                                                                                                                            
    public static void Main(string[] args)                                                                                                     
    {                                                                                                                                          
        Console.WriteLine("Hello Console");                                                                                                      
        Console.WriteLine("Arguments: " + string.Join(", ", args));                                                                              
    }                                                                                                                                          
}                                                                                                                                            

Si noti che gli argomenti della riga di comando vengono passati allo script C#, ma gli argomenti shebang (nel primo script C# sopra "-r:System.Windows.Forms.dll -r:System.Drawing.dll") vengono passati allo script C# compilatore. Utilizzando quest'ultima funzionalità, puoi specificare qualsiasi argomento del compilatore richiesto sulla prima riga del tuo script C#.

Se sei interessato ai dettagli su come funziona lo script bash, shebang (#!) Raggruppa tutti gli argomenti passati ad esso sulla prima riga dello script C#, seguito dal nome dello script, seguito dagli argomenti della riga di comando passati allo script si. Nel primo esempio C# sopra, i seguenti 5 argomenti verrebbero passati allo script bash (delineati da virgolette):

"-r:System.Windows.Forms.dll -r:System.Drawing.dll" "hello.cs" "foo" "bar" "baz"

Lo script determina che il primo argomento non è un nome file e presuppone che contenga argomenti per il compilatore C#. Quindi elimina la prima riga dello script C# utilizzando 'tail' e salva il risultato in un file temporaneo (poiché il compilatore C# non legge da stdin). Infine, l'output del compilatore viene salvato in un altro file temporaneo ed eseguito in mono con gli argomenti originali passati allo script. L'operatore 'shift' viene utilizzato per eliminare gli argomenti del compilatore e il nome dello script, lasciando solo gli argomenti dello script.

Gli errori di compilazione verranno scaricati nella riga di comando quando viene eseguito lo script C#.


Il #! (hashbang) è usato per dire alla shell quale interprete usare in modo che i tuoi script perl, php, bash, sh, ecc. funzionino correttamente.

Ma C# non è un linguaggio di scripting, è pensato per essere compilato in un formato eseguibile. Devi installare almeno un compilatore e un runtime se vuoi usare C#, e preferibilmente un IDE (Integrated Development Environment) per aiutarti a sviluppare ed eseguire il debug delle tue applicazioni.

Installa Mono per il compilatore e il runtime, quindi MonoDevelop per l'IDE.


Linux
  1. Parti per un'avventura nel tuo terminale Linux

  2. Linux:esegui applicazioni Mac Os X su Linux?

  3. 5 usi del comando mv nel terminale Linux

  4. Cowsay:divertimento nel terminale Linux

  5. Un eseguibile Linux compilato su un tipo di Linux verrà eseguito su un altro?

Gioca a Tetris sul tuo terminale Linux

Esegui file binari in Linux

Come eseguire Windows 95 su Linux

I 50 comandi Linux più utili da eseguire nel terminale

Come eseguire più comandi Linux contemporaneamente nel terminale Linux

Terminale di compensazione