Créer des applications F#

Effectué

À ce stade, vous avez utilisé la session REPL et peut-être même créé un fichier de script fsx. Votre application s’est développée et vous devez maintenant inclure des fichiers supplémentaires, ainsi que la capacité à 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
  • ASP.NET Core web apps (Applications web ASP.NET Core)
  • Fichiers de configuration

F# prend en charge de nombreux modèles, allant des tests aux bibliothèques de classes en passant par le web. 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#, utilisez la commande suivante.

dotnet new console --language F# -o MyFSharpApp

Certains interpréteurs interprètent la commande # 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 de projet MSBuild qui contient des informations et des instructions de génération. 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.

Le fichier Program.fs contient le code suivant :

// 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 vous avez créé une application console, il est temps de la générer à l'aide de la commande dotnet build. 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.
  • Fichiers de symboles .pdb 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.