Creare applicazioni F#
A questo punto è stato usato il ciclo Read–Eval–Print (REPL) e probabilmente è stato creato un file di script con estensione fsx. L'applicazione è cresciuta ed è quindi necessario includere più file, nonché la possibilità di creare un pacchetto e distribuire l'applicazione. A tale scopo, è necessario creare un progetto. .NET SDK offre vari modelli di progetto che consentono di iniziare a compilare tutti i tipi di applicazioni.
Che cosa sono i modelli .NET?
Quando si installa .NET SDK, si ricevono numerosi modelli predefiniti per la creazione di progetti e file, tra cui:
- App console
- Librerie di classi
- Progetti di unit test
- App Web ASP.NET Core
- File di configurazione
F# offre il supporto per numerosi modelli, dai test e dal Web alle librerie di classi. Per un elenco completo dei progetti supportati, eseguire dotnet new -l
nella console.
Creare un'applicazione usando i modelli
Per creare una nuova applicazione, usare il comando dell'interfaccia della riga di comando .NET dotnet new
. Ad esempio, se si vuole creare un'applicazione console F#, usare il comando seguente.
dotnet new console --language F# -o MyFSharpApp
Alcune shell interpretano #
come un carattere speciale. In tal caso, racchiudere il linguaggio tra virgolette come dotnet new console --language "F#" -o MyFSharpApp
.
Il comando dotnet new console
usa il modello .NET della console predefinito per eseguire lo scaffolding di una nuova applicazione console.
Dopo alcuni secondi, viene visualizzata una directory denominata MyFSharpApp con il codice per l'applicazione F#.
Struttura progetto
Nella directory MyFSharpApp sono presenti due file:
- Program.fs: punto di ingresso per l'applicazione.
- MyFSharpApp.fsproj: il file di progetto MSBuild che contiene informazioni e istruzioni sulla compilazione. MSBuild è una piattaforma per la compilazione di applicazioni che fornisce uno schema XML per un file di progetto che controlla il modo in cui la piattaforma di compilazione elabora e compila il software.
Il file Program.fs contiene il codice seguente:
// Learn more about F# at https://learn.microsoft.com/dotnet/fsharp
open System
// Define a function to construct a message to print
let from whom =
sprintf "from %s" whom
[<EntryPoint>]
let main argv =
let message = from "F#" // Call the function
printfn "Hello world %s" message
0 // return an integer exit code
Questa applicazione usa la libreria di classi System
, importata usando la parola chiave open
.
La funzione from
usa il parametro stringa whom
per creare e formattare un messaggio stringa.
La funzione main
è il punto di ingresso dell'applicazione. Usa la funzione from
per creare il messaggio "from F#" e associa il valore a message
. Quindi, usando la funzione printfn
, stampa "Hello world from F#" nella console.
Creare un'applicazione
Dopo aver creato un'applicazione console, è possibile compilarla usando il comando dotnet build
. Il comando dotnet build
compila il progetto e le relative dipendenze in un set di file binari. I file binari includono il codice del progetto nei file di linguaggio intermedio (IL) con estensione dll. A seconda del tipo di progetto e delle impostazioni, è possibile includere altri file, ad esempio:
- Eseguibile che è possibile usare per eseguire l'applicazione, se il tipo di progetto è un eseguibile con destinazione .NET Core 3.0 o versione successiva.
- File di simboli usati per il debug con estensione pdb.
- File con estensione deps.json che visualizza le dipendenze dell'applicazione o della libreria.
- File con estensione runtimeconfig.json che specifica il runtime condiviso e la relativa versione per un'applicazione.
- Altre librerie da cui dipende il progetto (tramite riferimenti al progetto o riferimenti al pacchetto NuGet).
I file di output vengono scritti nel percorso predefinito, ovvero bin/<configuration>/<target>. Debug è la configurazione predefinita, ma è possibile eseguirne l'override usando l'opzione --configuration
. La destinazione fa riferimento al framework di destinazione, specificato nella proprietà TargetFramework
del file con estensione fsproj. Il framework di destinazione specifica il set di API che si vuole rendere disponibile per l'app o la libreria. Ad esempio, se si ha un'applicazione .NET 5 e si esegue dotnet build
, l'output viene inserito in bin/Debug/net5.0.
Eseguire l'applicazione
Per le applicazioni eseguibili, il comando dotnet run
offre un'opzione utile per eseguire l'applicazione. Il comando dotnet run
cerca il file con estensione dll o il file eseguibile nella directory di output e usa il driver dotnet
per eseguire il codice come definito nel punto di ingresso dell'applicazione (Program.fs).
Suggerimento
Quando si usa il comando dotnet run
, viene eseguito automaticamente anche dotnet build
. È quindi possibile evitare di compilare in modo esplicito l'applicazione.