Compartir vía


Introducción a F# con la CLI de .NET

En este artículo se explica cómo empezar a trabajar con F# en cualquier sistema operativo (Windows, macOS o Linux) con la CLI de .NET. El proceso consiste en crear una solución multiproyecto con una biblioteca de clases que es llamada por una aplicación de consola.

Prerrequisitos

Para empezar, debe instalar el SDK de .NET más reciente.

En este artículo se da por supuesto que sabe cómo usar una línea de comandos y tener un editor de texto preferido. Si aún no lo usa, Visual Studio Code es una excelente opción como editor de texto para F#.

Creación de una solución de varios proyectos sencilla

Abra un terminal y use el comando dotnet new para crear un nuevo archivo de solución llamado FSharpSample:

dotnet new sln -o FSharpSample

La siguiente estructura de directorios se genera después de ejecutar el comando anterior:

FSharpSample
    ├── FSharpSample.sln

Escribir una biblioteca de clases

Cambie los directorios a FSharpSample.

Use el dotnet new comando para crear un proyecto de biblioteca de clases en la carpeta src denominada Library.

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

La siguiente estructura de directorios se genera después de ejecutar el comando anterior:

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

Reemplace el contenido de Library.fs por el código siguiente:

module Library

open System.Text.Json

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

Agregue el Library proyecto a la FSharpSample solución mediante el comando dotnet sln add . Este comando agrega el proyecto al archivo de solución para que la solución pueda realizar el seguimiento y compilarlo:

dotnet sln add src/Library/Library.fsproj

Ejecute dotnet build para compilar el proyecto. Las dependencias sin resolver se restauran al compilar.

Escritura de una aplicación de consola que consume la biblioteca de clases

Use el dotnet new comando para crear una aplicación de consola en la carpeta src denominada App.

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

La siguiente estructura de directorios se genera después de ejecutar el comando anterior:

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

Reemplace el contenido del archivo Program.fs por el código siguiente:

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

Agregue una referencia al proyecto Library mediante dotnet reference add. Este comando agrega un <ProjectReference> elemento al archivo App.fsproj, que indica al compilador que el proyecto de aplicación depende del proyecto Biblioteca:

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

El comando anterior agrega el siguiente XML al archivo App.fsproj:

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

Sugerencia

Si omite este paso e intenta compilar el proyecto de aplicación, obtendrá un error de compilación porque no se encuentra el Library módulo. Si esto sucede, puede ejecutar el dotnet add reference comando o agregar manualmente el <ProjectReference> elemento mostrado anteriormente al archivo App.fsproj.

Agregue el App proyecto a la FSharpSample solución mediante el dotnet sln add comando :

dotnet sln add src/App/App.fsproj

Restaure las dependencias de NuGet con dotnet restore y ejecute dotnet build para compilar el proyecto.

Cambie el directorio al proyecto de consola src/App y ejecute el proyecto al pasar Hello World como argumentos:

cd src/App
dotnet run Hello World

Debería ver los siguientes resultados:

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}

Pasos siguientes

A continuación, explore el tour de F# para conocer más sobre las diferentes características de F#.