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. |
Contenu connexe
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