Creación de aplicaciones de F#

Completado

En este punto, ha usado el bucle Read-Evaluate-Print-Loop (REPL) e incluso ha creado un archivo de script fsx. Ahora está en el punto en el que la aplicación está creciendo y necesita incluir más archivos. También quiere 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# admite varias plantillas, desde pruebas y proyectos 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, si desea crear una aplicación de consola de F#, use 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 utiliza la plantilla integrada de .NET para generar 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 : el 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.

Nota:

Si la plantilla de consola se creó con una versión más reciente de .NET, podría generar código con un punto de entrada implícito que llame a la printfn función de forma predeterminada.

En el ejemplo siguiente, el archivo Program.fs contiene código con un punto de entrada explícito .

// 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 se crea la aplicación de consola, es el momento de compilarla mediante el dotnet build comando . 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 construir explícitamente la aplicación.