Creación de aplicaciones de F#
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.