Créer des applications F#

Effectué

À ce stade, vous avez utilisé le fichier REPL (Read-Evaluate-Print-Loop) et peut-être même créé un fichier de script fsx . Vous êtes maintenant à l’endroit où votre application augmente et vous devez inclure davantage de fichiers. Vous souhaitez également pouvoir empaqueter et distribuer votre application. Pour ce faire, vous devez créer un projet. Le kit de développement logiciel (SDK) .NET fournit divers modèles de projet pour vous aider à créer tous types d'applications.

Que sont les modèles .NET ?

Quand vous installez le kit SDK .NET, vous recevez de nombreux modèles intégrés permettant de créer des projets et des fichiers, notamment :

  • Applications de console
  • bibliothèques de classes ;
  • Projet de tests unitaires
  • Applications web ASP.NET core
  • Fichiers de configuration

F# prend en charge différents modèles, allant du test et des projets web aux bibliothèques de classes. Pour obtenir la liste complète des projets pris en charge, exécutez dotnet new -l sur la console.

Créer une application à l'aide de modèles

Pour créer une application, utilisez la commande CLI .NET dotnet new. Par exemple, si vous souhaitez créer une application console F#, vous utilisez la commande suivante.

dotnet new console --language F# -o MyFSharpApp

Certains shells interprètent # comme un caractère spécial. Dans ce cas, mettez le langage entre guillemets comme suit : dotnet new console --language "F#" -o MyFSharpApp.

La commande dotnet new console utilise le modèle .NET de console intégré pour créer une nouvelle application console.

Au bout de quelques secondes, un répertoire MyFSharpApp apparaît avec le code de votre application F#.

Structure du projet

Le répertoire MyFSharpApp contient deux fichiers :

  • Program.fs : point d'entrée de votre application.
  • MyFSharpApp.fsproj : fichier projet MSBuild qui contient des informations de build et des instructions. MSBuild est une plateforme de création d'applications qui fournit un schéma XML pour un fichier de projet qui contrôle la façon dont la plateforme de génération traite et crée le logiciel.

Remarque

Si votre modèle de console a été créé avec une version plus récente de .NET, il peut générer du code avec un point d’entrée implicite qui appelle la printfn fonction par défaut.

Dans l’exemple suivant, le fichier Program.fs contient du code avec un point d’entrée explicite .

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

Cette application utilise la bibliothèque de classes System, qui est importée à l’aide du mot clé open.

La fonction from utilise le paramètre de chaîne whom pour créer et mettre en forme un message de type chaîne.

La fonction main est le point d'entrée de l'application. Elle utilise la fonction from pour créer le message « from F# » et lie la valeur au message. Ensuite, à l'aide de la fonction printfn, elle affiche « Hello world from F# » sur la console.

Générer une application

Maintenant que votre application console est créée, il est temps de la générer à l’aide de la dotnet build commande. La commande dotnet build génère le projet et ses dépendances dans un ensemble de fichiers binaires. Les composants binaires incluent le code du projet dans des fichiers de langage intermédiaire (IL) .dll. Selon le type de projet et les paramètres, d’autres fichiers peuvent être inclus, par exemple :

  • Exécutable qui peut être utilisé pour exécuter l’application, si le type de projet est un exécutable ciblant .NET Core 3.0 ou version ultérieure.
  • Les fichiers de symboles portant l'extension .pdb sont utilisés pour le débogage.
  • Fichier .deps.json répertoriant les dépendances de l'application ou de la bibliothèque.
  • Fichier .runtimeconfig.json spécifiant le runtime partagé et sa version pour une application.
  • Autres bibliothèques dont dépend le projet (via des références de projet ou des références de package NuGet).

Les fichiers de sortie sont placés à l'emplacement par défaut, à savoir bin/<configuration>/<target>. « Debug » est la configuration par défaut, mais vous pouvez la remplacer à l'aide de l'option --configuration. Le terme « cible » fait référence à la version cible de .NET Framework, qui est spécifiée dans la propriété TargetFramework du fichier fsproj. La version cible de .NET Framework spécifie l'ensemble d'API que vous souhaitez mettre à la disposition de l'application ou de la bibliothèque. Par exemple, si vous disposez d'une application .NET 5 et que vous exécutez dotnet build, la sortie est placée sous bin/debug/net 5.0.

Exécuter votre application

Pour les applications exécutables, la commande dotnet run constitue une option intéressante pour exécuter votre application. La commande dotnet run recherche le fichier .dll ou l'exécutable dans votre répertoire de sortie, et utilise le pilote dotnet pour exécuter le code tel que défini dans le point d'entrée de l'application (Program.fs).

Conseil

Lorsque vous utilisez la commande dotnet run, la commande dotnet build est également exécutée automatiquement. Cela évite de passer par l'étape de génération explicite de votre application.