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.