Partager via


Concepts de l’API de requête de projet

Dans Visual Studio, les projets sont des collections de fichiers qui sont compilés ensemble dans un exécutable ou une autre forme de production, et les solutions sont des collections de projets. Les projets et solutions sont respectivement représentés dans le système de fichiers par les fichiers projet et les fichiers solution. Pour plus d’informations, consultez Quels sont les solutions et projets dans Visual Studio ?.

Le système de projet se trouve entre un fichier projet ou solution sur le disque (par exemple, .csproj et.vbproj) et diverses fonctionnalités de Visual Studio, comprenant entre autre les Explorateur de solutions, les concepteurs, le débogueur, les services de langage, Build and Deployment. Les systèmes de projet font partie des composants de Visual Studio pour aider les utilisateurs à travailler avec et à gérer des projets, exécuter des builds pour produire des résultats et tester les productions, et presque toutes les interactions qui surviennent dans les fichiers contenus dans un fichier projet se produisent via le système de projet. Vous pouvez trouver plus d’informations sur les systèmes de projet, ici.

L’objectif de l’API de requête de projet consiste à permettre aux extensions de récupérer des données sur les projets et solutions et d’y apporter des modifications.

Quelques exemples de ce que vous pouvez faire avec une requête de projet :

  • Énumérer les fichiers sources dans un projet
  • Vérifier les packages NuGet référencés par un projet
  • Rechercher tous les projets qui ont un ensemble donné de capacités
  • Ajouter de nouveaux fichiers à un projet
  • Modifier les propriétés d’un projet

Une requête de projet est une série de clauses qui référencent différents articles. Consultez la vue d’ensemble de la requête de projet pour plus d’informations et pour obtenir des exemples de requêtes de projet pour les tâches courantes.

Types d’éléments de requête de projet

Il existe plusieurs articles différents que vous pouvez référencer dans vos requêtes de projet. Certains articles ont des enfants ou des collections enfants pouvant également être référencés. Par exemple, un WorkSpace contient collection une collection de Projects, chacun contenant une collection de Files.

Terme Description
WorkSpace Espace de travail de niveau supérieur de l’API pour fournir le point d’entrée.
PropertiesAvailableStatus Point d’entrée pour vérifier si une valeur de propriété est disponible dans le résultat.
QueryableSpace.Projects Tous les projets de l’espace de travail.
QueryableSpace.Solutions Toutes les solutions dans l’espace de travail.
Solution Représente une solution dans Visual Studio.
Project Représente la plupart des projets dans Visual Studio, mais les dossiers de solutions sont représentés différemment dans VisualStudio.Extensibility.
SolutionFolder Représente un dossier de solution, lequel est un dossier virtuel destiné à regrouper des projets et des fichiers à l’intérieur d’une solution Visual Studio.
Dossier Représente un dossier contenu par un projet.
File Représente un fichier contenu par un projet ou un dossier de solutions.
ExternalFile Représente les fichiers externes référencés par un projet, lequel n’est pas encore pris en charge par les projets C++.
Propriété Représente un jeu dynamique (nom/type faible) des propriétés d’un projet, d’une configuration ou d’un fichier.
RuleName Représente l’ensemble de règles dans une configuration de projets.
ProjectReference Représente les références de projet à projet, y compris les références de projets partagées.
PackageReference Représente une référence de package dans une configuration de projets, généralement une référence de package NuGet.
AssemblyReference Représente un assembly référencé dans une configuration de projets.
ConfigurationDimensionDefinition Représente des valeurs pour déclarer des configurations de projets.
ProjectConfiguration Représente une configuration de projets.
ConfigurationDimension Représente les valeurs de chaque dimension d’une configuration de projets unique.
OutputGroup Représente une collection de sorties de projet.
Sortie Représente un article à l’intérieur d’un groupe de sortie unique.
LaunchProfile Représente les profils de lancement définis dans un projet.
PropertyPage Représente les pages de propriétés affichées pour le projet.
Projet de start-up Représente les projets de start-up définis dans la solution.

Types de clauses de requête de projet

Les clauses de votre requête de projet déterminent le type d’articles à retourner dans la sortie, la collection à partir de laquelle elles doivent provenir, les propriétés qu’elles doivent avoir et si les articles retournés doivent être mutables. Les clauses sont également utilisées pour limiter et filtrer la sortie.

Terme Description
With Demande la valeur d’une propriété/collection à retourner à partir de la requête.
WithRequired La valeur des requêtes d’une propriété/collection doit être retournée à partir de la requête.
Where Demande le filtrage du résultat de la requête en fonction d’un prédicat.
Get Obtient les articles enfants à la place dans le résultat de la requête.
QueryAsync Exécute une requête et récupère le résultat en tant qu’IAsyncEnumerable.
AsQueryable Démarre une requête à partir d’un objet récupéré précédent.
QueryFrom Démarre une requête à partir d’une collection d’objets récupérés précédents.
AsUpdatable Commence à mettre à jour l’objet à partir d’un résultat de requête.
ExecuteAsync Exécute une requête Mise à jour.

Types de filtrage des requêtes de projet

Le filtrage des types facilite l’affinement et la concentration des résultats de requête. Notez que certains types de filtrage répertoriés ci-dessous peuvent ne pas être disponibles pour chaque article de requête.

Terme Description
ConfigurationsByName Filtre les résultats de la requête vers un nom de configuration spécifique.
FilesByPath Filtre les résultats de la requête vers un chemin d’accès de fichier spécifique.
OutputGroupsByName Filtre les résultats de la requête vers un nom de groupe de production spécifique.
ProjectsByCapabilities Filtre la requête en fonctionnalités de projet spécifiques.
ProjectsByPath Filtre les résultats de la requête vers un chemin d’accès de projet spécifique.
ProjectsByProjectGuid Filtre les résultats de la requête vers un chemin d’accès de guide spécifique.
RuleResultsByRuleName Filtre la requête en un nom de règle spécifique.
Ignorer Exécute un résultat de requête sur un nombre limité d’éléments en ignorant.

Types d’actions de requête de projet

Les actions de votre requête de projet déterminent les modifications apportées au système de projet. Notez que chaque type d’élément de requête a ses propres actions à leur disposition. Vous trouverez ci-dessous une liste simple de requêtes d’actions.

Terme Description
AddAssemblyReference Représente l’opération permettant d’ajouter une référence d’assembly à un projet.
AddConfigurationDimensionValue Ajoute une nouvelle valeur à une dimension de configuration (par exemple, Configuration ou Plateforme).
AddFiles Représente l’opération permettant d’ajouter un fichier existant au projet.
AddLaunchProfile Représente l’opération permettant d’ajouter un nouveau profil de lancement à un projet.
AddPackageReference Représente l’opération permettant d’ajouter une référence de package à un projet.
AddProjectReference Représente l’opération permettant d’ajouter un projet à une référence de projet à un projet.
AddProject Représente l’opération permettant d’ajouter un projet à une solution ou à un dossier de solution.
AddProjectReferenceByPath Représente l’opération permettant d’ajouter un projet à une référence de projet au chemin d’accès d’un projet.
AddSolutionConfiguration Représente l’opération permettant d’ajouter une configuration de solutions.
Build Représente l’opération permettant de créer une solution.
Clean Représente l’opération permettant de nettoyer une solution.
ConfigurationDimensionValue Représente l’opération permettant de définir la valeur de dimension d’une configuration.
CreateFile Représente l’opération permettant de créer un fichier dans un projet.
CreateFolder Représente l’opération permettant de créer un dossier dans un projet.
CreateSolutionFolder Représente l’opération permettant d’ajouter un dossier de solutions à une solution ou à un dossier de solutions existant.
Déboguer Représente l’opération permettant de déboguer une solution.
DeleteConfigurationDimensionValue Supprime une valeur de la dimension de configuration (par exemple, Configuration ou Plateforme).
Supprimer Représente l’opération permettant de supprimer un projet.
DeleteSolutionConfiguration Représente l’opération permettant de supprimer une configuration de solutions.
Déployer Représente l’opération permettant de déployer une solution.
DuplicateLaunchProfile Représente l’opération permettant de dupliquer un profil de lancement existant.
Exclure Représente l’opération permettant d’exclure un projet.
Recréation Représente l’opération permettant de regénérer une solution.
ReloadProject Représente l’opération permettant de recharger un projet.
RemoveLaunchProfile Représente l’opération permettant de supprimer un profil de lancement d’un projet.
RenameFile Représente l’opération permettant de renommer un fichier dans un projet.
RenameFolder Représente l’opération permettant de renommer un dossier dans un projet.
RenameSolutionFolder Représente l’opération permettant de renommer un dossier de solutions.
RenameProject Représente l’opération permettant de renommer un projet.
Exécuter Représente l’opération permettant d’exécuter une solution.
RunCustomTool Représente l’opération permettant d’exécuter un outil personnalisé.
Enregistrer Représente l’opération permettant d’enregistrer un projet.
SetPropertyValue Représente l’opération permettant de définir une valeur de la propriété.
SetCopyToLocal Représente l’opération permettant de définir la valeur de CopyToLocal pour une référence de projet.
SetBuildProperty Représente l’opération permettant de définir la valeur d’une propriété de génération de configuration de projet.
SetEvaluatedUIPropertyValue Représente l’opération permettant de définir la valeur évaluée d’une propriété visible par l’utilisateur.
SetLaunchProfilePropertyValue Représente l’opération permettant de définir la valeur d’une propriété exposée via le profil de lancement.
SetPackageReferenceVersion Représente l’opération permettant de renommer un dossier de solutions.
SetSolutionFolderName Représente l’opération permettant de définir le nom d’un dossier de solutions.
SetStartupProjects Représente l’opération permettant de définir un projet de démarrage.
SetUnevaluatedUIPropertyValue Représente l’opération permettant de définir la valeur non évaluée d’une propriété visible par l’utilisateur.
UnloadProject Représente l’opération permettant de décharger un projet.
WaitIntellisenseReady Représente l’opération permettant d’attendre que la progression de l’opération IntelliSense du projet ou de la solution soit prête.

Types de mises à jour de requête de projet

Ces requêtes prennent en charge le suivi des mises à jour apportées aux résultats des requêtes.

Terme Description
TrackUpdatesAsync Représente l’opération permettant de suivre les modifications apportées à une requête.

Pour voir quelques exemples de requêtes de projet pour les tâches fréquentes, consultez la vue d’ensemble de la requête de projet

Pour obtenir un exemple d’extension utilisant l’API de requête de projet, consultez l’échantillon de requête de projet