Freigeben über


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.

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