Développer avec Visual F# dans Visual Studio

Cet article contient des informations sur les fonctionnalités de Visual Studio pour le développement F#.

Installer la prise en charge de F#

Pour développer avec F# dans Visual Studio, installez d’abord la charge de travail Développement .NET Desktop si ce n’est déjà fait. Vous installez les charges de travail de Visual Studio par le biais de Visual Studio Installer, que vous pouvez ouvrir en sélectionnant Outils>Obtenir des outils et fonctionnalités.

.NET desktop development workload in Visual Studio

Fonctionnalités de projet F#

Différents modèles de projet et d’élément sont disponibles pour F# dans Visual Studio. L’illustration suivante montre certains des modèles de projet F# pour .NET Core et .NET Standard :

F# project templates in Visual Studio

L’illustration suivante montre certains des modèles d’élément F# :

F# item templates in Visual Studio

Pour plus d’informations sur les modèles d’élément pour l’accès aux données, consultez Fournisseurs de types F#.

Le tableau suivant récapitule les fonctionnalités dans les propriétés de projet pour F# :

Paramètre de projet Pris en charge en F# ? Notes
Fichiers de ressources Oui
Paramètres de référence, de débogage et de build Oui
Multi-ciblage Oui
Icône et manifeste Non Disponible par le biais des options de ligne de commande du compilateur.
Services client ASP.NET Non
ClickOnce Non Utilisez un projet client dans un autre langage .NET, si c’est applicable.
Affectation de noms forts Non Disponible par le biais des options de ligne de commande du compilateur.
Publication et gestion de version d’assembly Non
Analyse du code Non Les outils d’analyse de code peuvent être exécutés manuellement ou dans le cadre d’une commande post-build.
Sécurité (changer les niveaux de confiance) Non

Concepteur de projets

Le Concepteur de projet se compose de plusieurs pages de propriétés de projet regroupées par fonctionnalités. Les pages disponibles pour les projets F# sont pour la plupart un sous-ensemble de celles disponibles pour d’autres langages, et sont décrites dans le tableau suivant. Des liens sont fournis vers la page C# du Concepteur de projet correspondante.

Page du Concepteur de projet Liens connexes Description
Application Page Application, Concepteur de projet Permet de spécifier des paramètres et des propriétés au niveau de l’application, par exemple si vous créez une bibliothèque ou un fichier exécutable, quelle est la version de .NET ciblée par l’application ainsi que des informations sur l’emplacement où sont stockés les fichiers de ressources utilisés par cette application.
Build Page Générer, Concepteur de projets Permet de contrôler comment le code est compilé.
Événements de build Page Événements de build, Concepteur de projet Permet de spécifier des commandes à exécuter avant ou après la compilation.
Débogage Page Déboguer, Concepteur de projets Permet de contrôler comment l’application s’exécute pendant le débogage. Cela comprend les commandes à utiliser et l’identification du répertoire de départ de votre application, ainsi que tout mode de débogage spécial que vous souhaitez activer, tel que le code natif et SQL.
Package (.NET SDK uniquement) N/A Permet de définir les métadonnées de package NuGetlors de la publication en tant que package NuGet.
Chemins d'accès des références Gérer les références dans un projet Permet de spécifier où rechercher les assemblys dont dépend le code.
Ressources (.NET SDK uniquement) N/A Permet de générer et de gérer un fichier de ressources par défaut.

Paramètres propres à F#

Le tableau suivant récapitule les paramètres qui sont propres à F# :

Page du Concepteur de projet Paramètre Description
Build Générer des appels tail Permet d’utiliser l’instruction tail MSIL (Microsoft Intermediate Language). Cela entraîne la réutilisation du frame de pile pour les fonctions récursives tail. Équivalent à l’option du compilateur --tailcalls.
Build Autres indicateurs Permet de spécifier d’autres options de ligne de commande du compilateur.

Fonctionnalités d’éditeur de code et de texte

Les fonctionnalités suivantes des éditeurs de code et de texte de Visual Studio sont prises en charge en F# :

Fonctionnalité Description Pris en charge en F# ?
Commenter automatiquement Permet de commenter ou de supprimer les marques de commentaire des sections de code. Oui
Mettre en forme automatiquement Remet en forme le code avec une mise en retrait et un style standard. Non
Signets Permet d’enregistrer des emplacements dans l’éditeur. Oui
Changer le retrait Met en retrait ou annule la mise en retrait des lignes sélectionnées. Oui
Mise en retrait intelligente Met en retrait et retire automatiquement la mise en retrait du curseur en fonction des règles d’étendue de F#. Oui
Rechercher et remplacer du texte Permet de rechercher dans un fichier, un projet ou une solution, et éventuellement de modifier le texte. Oui
Atteindre la définition pour l’API .NET Quand le curseur est positionné sur une API .NET, montre le code généré à partir des métadonnées .NET. Non
Atteindre la définition pour une API définie par l’utilisateur Quand le curseur se trouve sur une entité de programme que vous avez définie, déplace le curseur à l’emplacement dans votre code où l’entité est définie. Oui
Atteindre la ligne Permet d’accéder à une ligne spécifique dans un fichier, par numéro de ligne. Oui
Barres de navigation en haut du fichier Permet d’accéder à des emplacements dans le code, par exemple d’après le nom de la fonction. Oui
Repères de structure de bloc Affiche des repères qui indiquent les étendues F#, dont vous pouvez afficher un aperçu en pointant dessus avec le curseur de souris. Oui
mode Plan Permet de réduire des sections de votre code pour créer une vue plus compacte. Oui
Remplacer par des tabulations Convertit les espaces en tabulations. Oui
Colorisation de type Affiche les noms des types définis dans une couleur spécifique. Oui
Recherche rapide. Voir Recherche rapide, fenêtre Rechercher et remplacer. Permet d’effectuer une recherche dans un fichier ou un projet. Oui
Ctrl+clic pour atteindre la définition Permet d’appuyer sur Ctrl et de cliquer sur un symbole F# pour appeler Atteindre la définition. Oui
Atteindre la définition à partir d’InfosRapides Symboles interactifs à l’intérieur d’info-bulles qui appellent Atteindre la définition. Oui
Atteindre tout Permet une navigation globale avec correspondance approximative pour toutes les constructions F# par le biais de Ctrl+T. Oui
Changement de nom inline Renomme toutes les occurrences d’un symbole inline. Oui
Rechercher toutes les références Recherche toutes les occurrences d’un symbole dans une base de code. Oui
Simplifier la correction de nom de code Supprime les qualificateurs inutiles pour les symboles F#. Oui
Supprime les corrections de code d’instructions open inutilisées Supprime toutes les instructions open inutiles dans un document. Oui
Correction de code de valeur inutilisée Suggère de renommer un identificateur inutilisé en le remplaçant par un trait de soulignement. Oui

Pour obtenir des informations générales sur la modification du code dans Visual Studio et les fonctionnalités de l’éditeur de texte, consultez Écrire du code dans l’éditeur.

Fonctionnalités IntelliSense

Le tableau suivant récapitule les fonctionnalités IntelliSense prises en charge et non prises en charge en F# :

Fonctionnalité Description Pris en charge en F# ?
Implémenter automatiquement les interfaces Génère des stubs de code pour les méthodes d’interface. Oui
Extraits de code Injecte du code à partir d’une bibliothèque de constructions de codage courantes dans les rubriques. Non
Compléter le mot Termine les mots et les noms à mesure que vous les tapez au clavier. Oui
Saisie semi-automatique Quand cette option est activée, fait en sorte que la complétion de mot sélectionne la première correspondance à mesure que vous tapez au clavier, au lieu d’attendre que vous en sélectionniez une ou que vous appuyiez sur Ctrl+Espace. Oui
Offre la complétion pour les symboles dans les espaces de noms non ouverts Avec la complétion automatique, un symbole correspondant qui se trouve dans un espace de noms non ouvert est suggéré, et la complétion avec l’instruction open correspondante vous est proposée. Oui
Générer des éléments de code Permet de générer du code de stub pour un large éventail de constructions. Non
Liste des membres Quand vous tapez l’opérateur d’accès au membre (.), affiche les membres d’un type. Oui
Organiser les directives using/open Organise les espaces de noms référencés par des instructions using en C# ou des directives open en F#. Non
Informations sur les paramètres Affiche des informations utiles sur les paramètres à mesure que vous tapez un appel de fonction. Oui
Infos express Affiche la déclaration complète de tout identificateur dans votre code. Oui
Fin d'accolade automatique Termine automatiquement les constructions de syntaxe de type accolade F# de manière transactionnelle. Oui

Pour obtenir des informations générales sur IntelliSense, consultez Utiliser IntelliSense.

Fonctionnalités de débogage

Le tableau suivant récapitule les fonctionnalités qui sont disponibles quand vous déboguez du code F# :

Fonctionnalité Description Pris en charge en F# ?
Automatique (fenêtre) Affiche les variables automatiques ou temporaires. Non
Points d’arrêt Permet de suspendre l’exécution du code à des points spécifiques lors du débogage. Oui
Points d’arrêt conditionnels Permet de définir des points d’arrêt qui testent une condition qui détermine si l’exécution doit être suspendue. Oui
Modifier & Continuer Permet de modifier et de compiler le code à mesure que vous déboguez un programme en cours d’exécution sans arrêter et redémarrer le débogueur. Non
Évaluateur d’expression Évalue et exécute le code au moment de l’exécution. Non, mais l’évaluateur d’expression C# peut être utilisé, bien que vous deviez utiliser la syntaxe C#.
Débogage d’historique Permet d’effectuer un pas à pas détaillé du code exécuté précédemment. Oui
Fenêtre Variables locales Montre les variables et les valeurs définies localement. Oui
Exécuter jusqu'au curseur Permet d’exécuter du code jusqu’à ce que la ligne qui contient le curseur soit atteinte. Oui
Pas à pas détaillé Permet d’avancer l’exécution et d’accéder à n’importe quel appel de fonction. Oui
Pas à pas principal Permet d’avancer l’exécution dans le frame de pile actuel et de se déplacer après tout appel de fonction. Oui

Pour obtenir des informations générales sur le débogueur Visual Studio, consultez Débogage dans Visual Studio.

Outils supplémentaires

Le tableau suivant récapitule la prise en charge de F# dans les outils Visual Studio.

Outil Description Pris en charge en F# ?
Hiérarchie d'appels Affiche la structure imbriquée des appels de fonction dans votre code. Non
Métrique du code Rassemble des informations sur votre code, comme le nombre de lignes. Non
Affichage de classes Fournit une vue basée sur le type du code dans un projet. Non
Fenêtre Liste d’erreurs Affiche une liste des erreurs dans le code. Oui
F# Interactive Permet de taper (ou copier et coller) du code F# et de l’exécuter immédiatement, indépendamment de la génération de votre projet. La fenêtre F# Interactive est une boucle REPL (Read, Evaluate, Print Loop). Oui
Explorateur d'objets Permet d’afficher les types dans un assembly. Les types F# tels qu’ils apparaissent dans les assemblys compilés n’apparaissent pas exactement comme vous les avez créés. Vous pouvez parcourir la représentation compilée des types F#, mais vous ne pouvez pas afficher les types tels qu’ils apparaissent en F#.
Fenêtre Sortie Affiche la sortie de build. Oui
Analyse des performances Fournit des outils pour mesurer les performances de votre code. Oui
Fenêtre Propriétés Affiche et autorise la modification des propriétés de l’objet dans l’environnement de développement qui a le focus. Oui
Explorateur de serveurs Fournit des méthodes pour interagir avec diverses ressources de serveur. Oui
Explorateur de solutions Permet d’afficher et de gérer des projets et des fichiers. Oui
Liste des tâches Permet de gérer les éléments de travail en rapport avec votre code. Non
Projets de test Fournit des fonctionnalités qui vous aident à tester votre code. Non
Boîte à outils Affiche des onglets qui contiennent des objets déplaçables, tels que des contrôles et des sections de texte ou de code. Oui

Voir aussi