Condividi tramite


Introduzione a F# con l'interfaccia della riga di comando di .NET

Questo articolo illustra come iniziare a usare F# in qualsiasi sistema operativo (Windows, macOS o Linux) con l'interfaccia della riga di comando di .NET. Viene eseguita la compilazione di una soluzione multiprogetto con una libreria di classi chiamata da un'applicazione console.

Prerequisiti

Per iniziare, è necessario installare la versione più recente di .NET SDK.

Questo articolo presuppone che si sappia come usare una riga di comando e avere un editor di testo preferito. Se non lo si usa già, Visual Studio Code è un'ottima opzione come editor di testo per F#.

Creare una semplice soluzione multiprogetto

Aprire un prompt dei comandi o un terminale e usare il comando dotnet new per creare un nuovo file di soluzione denominato FSharpSample:

dotnet new sln -o FSharpSample

La struttura di directory seguente viene generata dopo l'esecuzione del comando precedente:

FSharpSample
    ├── FSharpSample.sln

Crea una libreria di classi

Modificare le directory in FSharpSample.

Usare il dotnet new comando per creare un progetto di libreria di classi nella cartella src denominata Library.

dotnet new classlib -lang "F#" -o src/Library

La struttura di directory seguente viene generata dopo l'esecuzione del comando precedente:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        └── Library
            ├── Library.fs
            └── Library.fsproj

Sostituire il contenuto di Library.fs con il codice seguente:

module Library

open System.Text.Json

let getJson value =
    let json = JsonSerializer.Serialize(value)
    value, json

Aggiungere il Library progetto alla FSharpSample soluzione usando il comando dotnet sln add . Questo comando aggiunge il progetto al file di soluzione in modo che la soluzione possa tenere traccia e compilarla:

dotnet sln add src/Library/Library.fsproj

Eseguire dotnet build per compilare il progetto. Le dipendenze non risolte verranno ripristinate durante il processo di compilazione.

Scrivere un'applicazione console che utilizza la libreria di classi

Usare il dotnet new comando per creare un'applicazione console nella cartella src denominata App.

dotnet new console -lang "F#" -o src/App

La struttura di directory seguente viene generata dopo l'esecuzione del comando precedente:

└── FSharpSample
    ├── FSharpSample.sln
    └── src
        ├── App
        │   ├── App.fsproj
        │   ├── Program.fs
        └── Library
            ├── Library.fs
            └── Library.fsproj

Sostituire il contenuto del file Program.fs con il codice seguente:

open System
open Library

[<EntryPoint>]
let main args =
    printfn "Nice command-line arguments! Here's what System.Text.Json has to say about them:"

    let value, json = getJson {| args=args; year=System.DateTime.Now.Year |}
    printfn $"Input: %0A{value}"
    printfn $"Output: %s{json}"

    0 // return an integer exit code

Aggiungere un riferimento al Library progetto usando dotnet reference add. Questo comando aggiunge un <ProjectReference> elemento al file App.fsproj, che indica al compilatore che il progetto App dipende dal progetto Libreria:

dotnet add src/App/App.fsproj reference src/Library/Library.fsproj

Il comando precedente aggiunge il codice XML seguente al file App.fsproj:

<ItemGroup>
  <ProjectReference Include="..\Library\Library.fsproj" />
</ItemGroup>

Suggerimento

Se si ignora questo passaggio e si tenta di compilare il progetto app, verrà visualizzato un errore di compilazione perché il Library modulo non verrà trovato. In questo caso, è possibile eseguire il dotnet add reference comando o aggiungere manualmente l'elemento <ProjectReference> illustrato sopra al file App.fsproj.

Aggiungere il App progetto alla FSharpSample soluzione usando il dotnet sln add comando :

dotnet sln add src/App/App.fsproj

Ripristinare le dipendenze NuGet con dotnet restore ed eseguire dotnet build per compilare il progetto.

Cambia directory nel progetto console src/App ed esegui il progetto passando Hello World come argomenti:

cd src/App
dotnet run Hello World

Dovresti vedere i seguenti risultati:

Nice command-line arguments! Here's what System.Text.Json has to say about them:
Input: { args = [|"Hello"; "World"|] year = 2021 }
Output: {"args":["Hello","World"],"year":2021}

Passaggi successivi

Vedere quindi il tour di F# per altre informazioni sulle diverse funzionalità di F#.