Creación de aplicaciones de F#

Completado

Llegado este punto, ha usado REPL y quizás ha creado un archivo de script fsx. En este momento, su aplicación ha crecido, por lo que debe incluir más archivos, así como la capacidad de empaquetar y distribuir la aplicación. Para ello, deberá crear un proyecto. El SDK de .NET proporciona varias plantillas de proyecto para ayudarle a empezar a compilar aplicaciones de todos los tipos.

¿Qué son las plantillas de .NET?

Al instalar el SDK de .NET, recibirá más de una docena de plantillas integradas para crear proyectos y archivos, entre las que se incluyen:

  • Aplicaciones de consola
  • Bibliotecas de clases
  • Proyecto de prueba unitaria
  • Aplicaciones web de ASP.NET Core
  • Archivos de configuración

F# ofrece compatibilidad con una variedad de plantillas, desde pruebas y aplicaciones web hasta bibliotecas de clases. Para ver una lista completa de los proyectos admitidos, ejecute dotnet new -l en la consola.

Crear una aplicación mediante plantillas

Para crear una nueva aplicación, use el comando dotnet new de la CLI de .NET. Por ejemplo, para crear una aplicación de consola de F#, usaría el siguiente comando.

dotnet new console --language F# -o MyFSharpApp

Algunos shells interpretan # como un carácter especial. En ese caso, incluya el lenguaje entre comillas, como dotnet new console --language "F#" -o MyFSharpApp.

El comando dotnet new console usa la plantilla de .NET de consola integrada para realizar el scaffolding de una nueva aplicación de consola.

Después de unos segundos, aparece un directorio denominado MyFSharpApp con el código de la aplicación de F#.

Estructura del proyecto

Hay dos archivos en el directorio MyFSharpApp:

  • Program.fs: punto de entrada de la aplicación.
  • MyFSharpApp.fsproj: archivo de proyecto de MSBuild que contiene información de compilación e instrucciones. MSBuild es una plataforma para compilar aplicaciones, que proporciona un esquema XML para un archivo de proyecto que controla cómo la plataforma de compilación procesa y compila software.

El archivo Program.fs contiene el código siguiente:

// 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

Esta aplicación usa la biblioteca de clases System, que se importa mediante la palabra clave open.

La función from usa el parámetro de cadena whom para crear y formatear un mensaje de cadena.

La función main es el punto de entrada de la aplicación. Usa la función from para crear el mensaje "from F#" y enlaza el valor a message. A continuación, con la función printfn, imprime "Hello world from F#" en la consola.

Creación de una aplicación

Ahora que ha creado una aplicación de consola, es el momento de compilarla mediante el comando dotnet build. El comando dotnet build crea el proyecto y sus dependencias en un conjunto de archivos binarios. Los archivos binarios incluyen el código del proyecto en archivos de lenguaje intermedio (IL) con una extensión .dll. Según el tipo de proyecto y la configuración, se pueden incluir otros archivos, como los siguientes:

  • Un archivo ejecutable que se pueda usar para ejecutar la aplicación, si el tipo de proyecto es un archivo ejecutable que tiene como destino .NET Core 3.0 o versiones posteriores.
  • Archivos de símbolos usados para la depuración con una extensión .pdb.
  • Un archivo .deps.json, que muestra las dependencias de la aplicación o la biblioteca.
  • Un archivo .runtimeconfig.json, que especifica el runtime compartido y su versión de una aplicación.
  • Otras bibliotecas de las que depende el proyecto (a través de referencias de proyecto o referencias de paquetes NuGet).

Los archivos de salida se escriben en la ubicación predeterminada, que es bin/<configuration>/<target>. La depuración es la configuración predeterminada, pero puede invalidarla mediante la opción --configuration. El destino hace referencia a la plataforma de destino, que se especifica en la propiedad TargetFramework del archivo fsproj. La plataforma de destino especifica el conjunto de API que quiere poner a disposición de la aplicación o la biblioteca. Por ejemplo, si tiene una aplicación de .NET 5 y ejecuta dotnet build, la salida se coloca en bin/Debug/net5.0.

Ejecución de la aplicación

Para las aplicaciones que son ejecutables, el comando dotnet run proporciona una opción práctica para ejecutar la aplicación. El comando dotnet run busca el archivo .dll o el ejecutable en el directorio de salida y usa el controlador dotnet para ejecutar el código como se define en el punto de entrada de la aplicación (Program.fs).

Sugerencia

Cuando se usa el comando dotnet run, también se ejecuta dotnet build automáticamente. Por lo tanto, puede ahorrarse el paso de compilar explícitamente la aplicación.