Criar aplicativos F#
Neste ponto, você usou o REPL (Read-Evaluate-Print-Loop) e talvez até tenha criado um arquivo de script fsx . Agora você está no ponto em que seu aplicativo está crescendo e precisa incluir mais arquivos. Você também deseja a capacidade de empacotar e distribuir seu aplicativo. Para isso, você precisa criar um projeto. O SDK do .NET fornece vários modelos de projeto para ajudá-lo a começar a criar todos os tipos de aplicativos.
O que são modelos .NET?
Ao instalar o SDK do .NET, você recebe mais de uma dúzia de modelos integrados para criar projetos e arquivos, incluindo:
- Aplicativos de console
- Bibliotecas de classes
- Projetos de Teste de Unidade
- Aplicativos Web ASP.NET Core
- Arquivos de configuração
O F# tem suporte para vários modelos, desde testes e projetos Web até bibliotecas de classes. Para obter uma lista completa dos projetos com suporte, execute dotnet new -l no console.
Criar um aplicativo usando modelos
Para criar um novo aplicativo, use o comando dotnet new do CLI do .NET. Por exemplo, se você quiser criar um aplicativo de console F#, use o comando a seguir.
dotnet new console --language F# -o MyFSharpApp
Alguns shells interpretam # como um caractere especial. Nesse caso, coloque a linguagem entre aspas, como dotnet new console --language "F#" -o MyFSharpApp.
O comando dotnet new console usa o modelo padrão de console do .NET para criar um esqueleto de um novo aplicativo de console.
Depois de alguns segundos, um diretório chamado MyFSharpApp aparece com o código do seu aplicativo F#.
Estrutura do Projeto
Há dois arquivos no diretório MyFSharpApp:
- Program.fs - O ponto de entrada do seu aplicativo.
- MyFSharpApp.fsproj – o arquivo de projeto do MSBuild que contém informações de build e instruções. O MSBuild é uma plataforma para a criação de aplicativos que fornece um esquema XML para um arquivo de projeto que controla como a plataforma de compilação processa e cria software.
Observação
Se o modelo de console tiver sido criado com uma versão mais recente do .NET, ele poderá gerar código com um ponto de entrada implícito que chama a printfn função por padrão.
No exemplo a seguir, o arquivo Program.fs contém código com um ponto 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
Esse aplicativo usa a biblioteca de classes System, que é importada usando a palavra-chave open.
A função from usa o parâmetro whom da cadeia de caracteres para criar e formatar uma mensagem de cadeia de caracteres.
A função main é o ponto de entrada do aplicativo. Ele usa a função from para criar a mensagem "do F#" e associa o valor a message. Em seguida, usando a função printfn, ele imprime "Olá, Mundo, do F#" no console.
Compilar um aplicativo
Agora que seu aplicativo de console foi criado, é hora de compilá-lo usando o dotnet build comando. O comando dotnet build compila o projeto e suas dependências em um conjunto de binários. Os binários incluem o código do projeto em arquivos de linguagem intermediária (IL) com uma extensão .dll. A depender do tipo de projeto e das configurações, outros arquivos podem ser incluídos, tais como:
- Um executável que você pode usar para executar o aplicativo, se o tipo de projeto for um executável direcionado para o .NET Core 3.0 ou posterior.
- Arquivos de símbolo usados para depuração com uma extensão .pdb.
- Um arquivo .deps.json, que lista as dependências do aplicativo ou da biblioteca.
- Um arquivo .runtimeconfig.json, que especifica o tempo de execução compartilhado e sua versão para um aplicativo.
- Outras bibliotecas das quais o projeto depende (por meio de referências de projeto ou referências de pacote do NuGet).
Os arquivos de saída são gravados no local padrão, que é bin/<configuration>/<target>. A configuração padrão é "Debug", mas você pode alterá-la usando a opção --configuration. O destino refere-se à estrutura de destino, que é especificada na propriedade TargetFramework do arquivo fsproj. A estrutura de destino especifica o conjunto de APIs que você deseja tornar disponíveis no aplicativo ou na biblioteca. Por exemplo, se você tiver um aplicativo .NET 5 e executar dotnet build , a saída será colocada em bin/Debug/net5.0.
Execute seu aplicativo.
No caso de aplicativos executáveis, o comando dotnet run oferece uma opção prática para executar seu aplicativo. O comando dotnet run procura o .dll ou o executável no diretório de saída e usa o driver dotnet para executar o código, conforme definido no ponto de entrada do aplicativo (Program.fs).
Dica
Quando você usa o comando dotnet run, o dotnet build também é executado automaticamente. Portanto, você economiza a etapa de compilar explicitamente seu aplicativo.