## page was renamed from rafbor/dotnet-script
#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
Questa guida spiega come creare [[Programmazione/Script|script]] in '''C#''' con lo strumento '''dotnet-script'''.
Spesso non è conveniente creare un progetto per '''.NET''' per compiti piccoli e/o semplici. In questi casi può risultare utile '''dotnet-script''' che permette di eseguire il codice '''C#''' come un singolo file di script, senza nessun metodo main, nessun `.csproj` e compilazione trasparente.
= Installazione =
0. Se non presente, installare '''.NET SDK''', come indicato in [[https://learn.microsoft.com/it-it/dotnet/core/install/linux-ubuntu|questa guida]].
0. Per installare '''dotnet-script''' digitare nel [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
dotnet tool install -g dotnet-script
}}}
== Creazione di uno script ==
'''dotnet-script''' è dotato di un comando di init per generare un semplice script.
0. Creare una cartella `DotnetScript` nella propria '''Home'''.
0. Aprire un [[AmministrazioneSistema/Terminale|terminale]] e spostarsi in questa cartella.
0. Digitare il seguente comando: {{{
dotnet script init
}}}
Verrano creati due file: `omnisharp.json` e `main.csx`.
* `omnisharp.json` contiene le impostazioni dello script, come il framework di destinazione e i riferimenti a nuget consentiti.
* `main.csx` è strutturato in modo da contenere un semplice esempio di `Hello World` funzionante. Il contenuto sarà simile al seguente:{{{#!cplusplus
#!/usr/bin/env dotnet-script
Console.WriteLine("Hello world!");
}}}
0. Su Linux gli script possono essere eseguiti direttamente come se fossero degli eseguibili. Verificare che lo script funzioni eseguendo il seguente comando:{{{
./main.csx
}}}
L'output dovrà essere:{{{
Hello World!
}}}
0. Di seguito un esempio di come sfruttare le potenzialità di '''.NET''', creando un array di persone (`nome` ed `età`). Allo script verrà passato un parametro, memorizzato nella variabile `Args` e recuperato nella variabile `nEta`. Quindi lo script filtrerà le persone che hanno meno di `nEta` anni, ordinate per età.<
>
Modificare il file `main.csx` copiando e incollando il seguente contenuto:{{{#!cplusplus
#!/usr/bin/env dotnet-script
using System;
using System.Data;
Int16 nEta = 0;
if (Args.Count > 0)
nEta = Convert.ToInt16(Args[0]);
else
{
Console.WriteLine("L'età non è stata specificata");
return;
}
DataTable dtable = new DataTable();
dtable.Columns.Add("Nome", typeof(string));
dtable.Columns.Add("Eta", typeof(Int16));
dtable.Rows.Add("Silvia", 32);
dtable.Rows.Add("Roberto", 28);
dtable.Rows.Add("Leonardo", 25);
dtable.Rows.Add("Francesco", 59);
dtable.Rows.Add("Alessandro", 55);
dtable.Rows.Add("Lorenzo", 18);
dtable.Rows.Add("Mattia", 41);
dtable.Rows.Add("Tommaso", 62);
dtable.Rows.Add("Gabriele", 39);
dtable.Rows.Add("Federico", 20);
int n=0;
DataRow[] dtRows;
dtRows = dtable.Select("Eta<" + nEta, "Eta ASC");
string strResult;
Console.WriteLine("Hanno meno di " + nEta + " anni");
foreach(DataRow row in dtRows)
{
strResult = string.Format("{0, -15}Età: {1}", row["Nome"], row["Eta"]);
Console.WriteLine(strResult);
}
}}}
0. Eseguire lo script con il seguente comando:{{{
./main.csx 50
}}}
L'output sarà:{{{
Hanno meno di 50 anni
Lorenzo Età: 18
Federico Età: 20
Leonardo Età: 25
Roberto Età: 28
Silvia Età: 32
Gabriele Età: 39
Mattia Età: 41
}}}
== Modo REPL (Read-Evaluate-Print-Loop) ==
Il modo '''REPL''' ("modo interattivo") viene avviato eseguendo '''dotnet-script''' senza alcun argomento.
Il modo interattivo consente di fornire singoli blocchi di codice '''C#''' e di eseguirli non appena si preme '''Invio''':{{{
~$ dotnet script
> var x = 1;
> x+x
2
}}}
Per maggiori informazioni consultare la [[https://github.com/dotnet-script/dotnet-script|pagina GitHub]] del progetto.
= Ulteriori risorse =
* [[Programmazione/CSharp|Guida C#]]
----
CategoryProgrammazione