Projektabfrage-API-Konzepte
In Visual Studio sind Projekte Sammlungen von Dateien, die in einer ausführbaren Datei oder einer anderen Form der Ausgabe kompiliert werden, und Lösungen sind Sammlungen von Projekten. Projekte und Lösungen werden im Dateisystem durch Projektdateien bzw. Lösungsdateien dargestellt. Weitere Informationen finden Sie unter Was sind Lösungen und Projekte in Visual Studio?.
Das Projektsystem befindet sich zwischen einer Projekt- oder Lösungsdatei auf dem Datenträger (z. B. .csproj
und .vbproj
) und verschiedenen Visual Studio-Features, einschließlich, aber nicht beschränkt auf die Projektmappen-Explorer, Designer, den Debugger, Sprachdienste, Build & Deployment. Projektsysteme sind Teil von Visual Studio-Komponenten, mit denen Benutzer mit Projekten arbeiten und sie pflegen, Builds zum Erzeugen von Ergebnissen ausführen und die Ausgabe testen können, sowie fast alle Interaktionen, die mit den in einer Projektdatei enthaltenen Dateien stattfinden, erfolgen über das Projektsystem. Weitere Informationen zu Projektsystemen finden Sie hier.
Ziel der Projektabfrage-API ist es, Erweiterungen zum Abrufen von Daten zu Projekten und Lösungen zu ermöglichen und Änderungen vorzunehmen.
Einige Beispiele dafür, was Sie mit einer Projektanfrage tun können:
- Aufzählen der Quelldateien in einem Projekt
- Überprüfen, auf welche NuGet-Pakete von einem Projekt verwiesen wird
- Suchen aller Projekte mit einer bestimmten Gruppe von Funktionen
- Hinzufügen einer Dateien zu einem Projekt
- Modifiziert die Eigenschaften eines Projekts ab
Eine Projektabfrage ist eine Reihe von Klauseln, die auf verschiedene Elemente verweisen. Weitere Informationen und Beispiele für Projektanfragen für allgemeine Aufgaben finden Sie in der Projektanfrageübersicht.
Elementtypen von Projektanfragen
Es gibt viele verschiedene Elemente, auf die Sie in Ihren Projektanfragen verweisen können. Einige Elemente haben untergeordnete Elemente oder untergeordnete Sammlungen, auf die ebenfalls verwiesen werden kann. Ein WorkSpace
enthält z. B. eine Auflistung von Projects
, von denen jede eine Sammlung von Files
enthält.
Begriff | Beschreibung |
---|---|
WorkSpace | Der Arbeitsbereich der obersten Ebene der API zur Bereitstellung des Einstiegspunkts. |
PropertiesAvailableStatus | Der Einstiegspunkt, um zu überprüfen, ob ein Eigenschaftswert im Ergebnis verfügbar ist. |
QueryableSpace.Projects | Alle Projekte im Arbeitsbereich. |
QueryableSpace.Solutions | Alle Lösungen im Arbeitsbereich. |
Lösung | Stellt eine Projektmappe in Visual Studio dar. |
Projekt | Stellt die meisten Projekte in Visual Studio dar, aber Lösungsordner werden in VisualStudio.Extensibility unterschiedlich dargestellt. |
SolutionFolder | Stellt einen Lösungsordner dar, bei dem es sich um einen virtuellen Ordner zum Gruppieren von Projekten und Dateien innerhalb einer Visual Studio-Projektmappe handelt. |
Ordner | Stellt einen Ordner dar, der in einem Projekt enthalten ist. |
Datei | Stellt eine Datei dar, die in einem Projekt oder einem Lösungsordner enthalten ist. |
ExternalFile | Stellt externe Dateien dar, auf die von einem Projekt verwiesen wird, das noch nicht von C++-Projekten unterstützt wird. |
Eigenschaft | Stellt einen dynamischen Satz (schwacher Name/Typ) von Eigenschaften eines Projekts, einer Konfiguration oder einer Datei dar. |
RuleName | Stellt den Satz von Regeln in einer Projektkonfiguration dar. |
ProjectReference | Stellt Projekt-zu-Projekt-Verweise dar, einschließlich freigegebener Projektverweise. |
PackageReference | Stellt einen Paketverweis in einer Projektkonfiguration dar, in der Regel ein NuGet-Paketverweis. |
AssemblyReference | Stellt eine referenzierte Assembly in einer Projektkonfiguration dar. |
ConfigurationDimensionDefinition | Stellt Werte zum Deklarieren von Projektkonfigurationen dar. |
ProjectConfiguration | Stellt eine Projektkonfiguration dar. |
ConfigurationDimension | Stellt Werte jeder Dimension einer einzelnen Projektkonfiguration dar. |
OutputGroup | Stellt eine Auflistung der Projektausgabe dar. |
Output | Stellt ein Element innerhalb einer einzelnen Ausgabegruppe dar. |
LaunchProfile | Stellt startprofile dar, die in einem Projekt definiert sind. |
PropertyPage | Stellt Eigenschaftenseiten dar, die für das Projekt angezeigt werden. |
Startup-Projekte | Stellt die definierten Startprojekte in der Lösung dar. |
Klauseltypen von Projektanfragen
Klauseln in Ihrer Projektabfrage bestimmen, welche Art von Elementen in der Ausgabe zurückgegeben werden soll, aus welcher Sammlung sie stammen sollen, welche Eigenschaften sie enthalten sollen, und ob die zurückgegebenen Elemente änderbar sein sollen. Klauseln werden auch verwendet, um die Ausgabe einzuschränken und zu filtern.
Begriff | Beschreibung |
---|---|
With | Fordert den Wert einer Eigenschaft/Sammlung an, die von der Abfrage zurückgegeben werden soll. |
WithRequired | Fragt nach dem Wert einer Eigenschaft/Sammlung, der von der Abfrage zurückgegeben werden muss. |
Hierbei gilt: | Fragt an, ob das Anfrageergebnis auf der Grundlage eines Prädikats gefiltert werden soll. |
Abrufen | Ruft stattdessen untergeordnete Elemente im Abfrageergebnis ab. |
QueryAsync | Führt eine Abfrage aus und ruft das Ergebnis als IAsyncEnumerable ab. |
AsQueryable | Startet eine Abfrage aus einem vorherigen abgerufenen Objekt. |
QueryFrom | Startet eine Abfrage aus einer Auflistung früher abgerufener Objekte. |
AsUpdatable | Startet das Aktualisieren des Objekts aus einem Anfrageergebnis. |
ExecuteAsync | Führt eine Aktualisierungsabfrage aus. |
Projektanfragefiltertypen
Filtertypen erleichtern die Verfeinerung und den Fokus von Abfrageergebnissen. Beachten Sie, dass bestimmte unten aufgeführte Filtertypen möglicherweise nicht für jedes Abfrageelement verfügbar sind.
Begriff | Beschreibung |
---|---|
ConfigurationsByName | Filtert die Abfrageergebnisse nach einem bestimmten Konfigurationsnamen. |
FilesByPath | Filtert die Abfrageergebnisse auf einen bestimmten Dateipfad. |
OutputGroupsByName | Filtert die Abfrageergebnisse nach einem bestimmten Namen der Ausgabegruppe. |
ProjectsByCapabilities | Filtert die Abfrage nach bestimmten Projektfunktionalitäten. |
ProjectsByPath | Filtert die Abfrageergebnisse auf einen bestimmten Projektpfad. |
ProjectsByProjectGuid | Filtert die Abfrageergebnisse nach einer bestimmten Projekt-GUID. |
RuleResultsByRuleName | Filtert die Abfrage nach einem bestimmten Regelnamen. |
Skip | Führt ein Abfrageergebnis auf eine begrenzte Anzahl von Elementen durch Überspringen aus. |
Projektanfrageaktionstypen
Aktionen in Ihrer Projektanfrage bestimmen, welche Änderungen am Projektsystem vorgenommen werden. Beachten Sie, dass für jeden Abfrageelementtyp eigene Aktionen verfügbar sind. Nachfolgend finden Sie eine einfache Liste von Aktionsabfragen.
Begriff | Beschreibung |
---|---|
AddAssemblyReference | Stellt die Operation dar, um einem Projekt einen Assembly-Verweis hinzuzufügen. |
AddConfigurationDimensionValue | Fügt einer Konfigurationsdimension (z. B. Konfiguration oder Plattform) einen neuen Wert hinzu. |
AddFiles | Stellt die Operation dar, um dem Projekt eine vorhandene Datei hinzuzufügen. |
AddLaunchProfile | Stellt die Operation dar, um einem Projekt ein neues Startprofil hinzuzufügen. |
AddPackageReference | Stellt die Operation dar, um einem Projekt einen Paketverweis hinzuzufügen. |
AddProjectReference | Stellt die Operation dar, um ein Projekt zum Projektverweis auf ein Projekt hinzuzufügen. |
AddProject | Stellt die Operation dar, um einer Projektmappe oder einem Lösungsordner ein Projekt hinzuzufügen. |
AddProjectReferenceByPath | Stellt die Operation dar, um ein Projekt zum Projektverweis auf den Pfad eines Projekts hinzuzufügen. |
AddSolutionConfiguration | Stellt die Operation zum Hinzufügen einer Lösungskonfiguration dar. |
Erstellen | Stellt die Operation zum Erstellen einer Lösung dar. |
Clean | Stellt die Operation zum Säubern einer Lösung dar. |
ConfigurationDimensionValue | Stellt die Operation zum Festlegen des Dimensionswerts einer Konfiguration dar. |
CreateFile | Stellt die Operation zum Erstellen einer neuen Datei in einem Projekt dar. |
CreateFolder | Stellt die Operation zum Erstellen eines Ordners in einem Projekt dar. |
CreateSolutionFolder | Stellt die Operation dar, um einer Lösung oder einem vorhandenen Lösungsordner einen Lösungsordner hinzuzufügen. |
Debug | Stellt die Operation zum Debuggen einer Lösung dar. |
DeleteConfigurationDimensionValue | Löscht einen Wert aus der Konfigurationsdimension (z. B. Konfiguration oder Plattform). |
Löschen | Stellt die Operation zum Löschen eines Projekts dar. |
DeleteSolutionConfiguration | Stellt die Operation zum Entfernen einer Lösungskonfiguration dar. |
Bereitstellen | Stellt die Operation zum Bereitstellen einer Lösung dar. |
DuplicateLaunchProfile | Stellt die Operation dar, um ein vorhandenes Startprofil zu duplizieren. |
Ausschließen | Stellt die Operation dar, um ein Projekt auszuschließen. |
Neu erstellen | Stellt die Operation zum Neuerstellen einer Lösung dar. |
ReloadProject | Stellt die Operation zum erneuten Laden eines Projekts dar. |
RemoveLaunchProfile | Stellt die Operation dar, um ein Startprofil aus einem Projekt zu entfernen. |
RenameFile | Stellt die Operation dar, um eine Datei in einem Projekt umzubenennen. |
RenameFolder | Stellt die Operation dar, um einen Ordner in einem Projekt umzubenennen. |
RenameSolutionFolder | Stellt den Vorgang zum Umbenennen eines Lösungsordners dar. |
RenameProject | Stellt die Operation dar, um ein Projekt umzubenennen. |
Ausführung | Stellt die Operation zum Ausführen einer Lösung dar. |
Runcustomtool | Stellt die Operation zum Ausführen eines benutzerdefinierten Tools dar. |
Speichern | Stellt die Operation zum Speichern eines Projekts dar. |
SetPropertyValue | Stellt die Operation zum Setzen eines Eigenschaftswertes dar. |
SetCopyToLocal | Stellt die Operation zum Festlegen des Werts von CopyToLocal für einen Projektverweis dar. |
SetBuildProperty | Stellt die Operation zum Festlegen des Werts der Build-Eigenschaft einer Projektkonfiguration dar. |
SetEvaluatedUIPropertyValue | Stellt die Operation zum Festlegen des bewerteten Werts einer für den Benutzer sichtbaren Eigenschaft dar. |
SetLaunchProfilePropertyValue | Stellt die Operation zum Festlegen des Werts einer Eigenschaft dar, die über das Startprofil verfügbar gemacht wird. |
SetPackageReferenceVersion | Stellt den Vorgang zum Umbenennen eines Lösungsordners dar. |
SetSolutionFolderName | Stellt die Operation zum Festlegen eines Lösungsordnernamens dar. |
SetStartupProjects | Stellt die Operation zum Festlegen eines Startprojekts dar. |
SetUnevaluatedUIPropertyValue | Stellt die Operation dar, um den nicht ausgewerteten Wert einer benutzerdefinierten Eigenschaft festzulegen. |
UnloadProject | Stellt die Operation zum Entladen eines Projekts dar. |
WaitIntellisenseReady | Stellt die Operation zum Warten auf die Fertigstellung des Projekt- oder Lösungs-Intellisense-Operationsfortschritts dar. |
Aktualisierungstypen von Projektanfragen
Diese Abfragen unterstützen die Überwachung von Aktualisierungen, die an Abfrageergebnissen vorgenommen wurden.
Begriff | Beschreibung |
---|---|
TrackUpdatesAsync | Stellt die Operation zum Nachverfolgen von Änderungen an einer Abfrage dar. |
Zugehöriger Inhalt
Einige Beispiele für Projektabfragen für allgemeine Operationen finden Sie in der Projektanfrageübersicht
Eine Beispielerweiterung, die die Projektabfrage-API verwendet, finden Sie unter Projektanfragebeispiel