Concetti relativi all'API query di Project

In Visual Studio i progetti sono raccolte di file compilati insieme in un eseguibile o in un altro formato di output e le soluzioni sono raccolte di progetti. I progetti e le soluzioni sono rappresentati nel file system rispettivamente dai file di progetto e dai file di soluzione. Per altre informazioni, vedere Che cosa sono le soluzioni e i progetti in Visual Studio?.

Il sistema di progetto si trova tra un file di progetto o di soluzione su disco (ad esempio, .csproj e .vbproj) e varie funzionalità di Visual Studio, tra cui, a titolo esemplificativo, le Esplora soluzioni, le finestre di progettazione, il debugger, i servizi di linguaggio, la compilazione e la distribuzione. I sistemi di progetto fanno parte dei componenti di Visual Studio per aiutare gli utenti a lavorare con e gestire progetti, eseguire compilazioni per produrre risultati e testare l'output e quasi tutte le interazioni che si verificano con i file contenuti in un file di progetto avviene tramite il sistema di progetto. Altre informazioni sui sistemi di progetto sono disponibili qui.

L'obiettivo dell'API di query del progetto è consentire alle estensioni di recuperare i dati relativi a progetti e soluzioni e apportare modifiche.

Alcuni esempi di operazioni che è possibile eseguire con una query di progetto:

  • Enumerare i file di origine in un progetto
  • Controllare quali pacchetti NuGet fanno riferimento a un progetto
  • Trovare tutti i progetti con un determinato set di funzionalità
  • Aggiungere nuovi file a un progetto
  • Modificare le proprietà di un progetto

Una query di progetto è una serie di clausole che fanno riferimento a vari elementi. Per altre informazioni e per esempi di query di progetto per le attività comuni, vedere Panoramica di Project Query.

Tipi di elementi di query di progetto

Esistono molti elementi diversi a cui è possibile fare riferimento nelle query del progetto. Alcuni elementi includono raccolte figlio o figlio a cui è possibile fare riferimento. Ad esempio, un WorkSpace oggetto contiene una raccolta di Projects, ognuno dei quali contiene una raccolta di Files.

Termine Descrizione
Workspace Area di lavoro di primo livello dell'API per fornire il punto di ingresso.
ProprietàAvailableStatus Punto di ingresso per verificare se un valore della proprietà è disponibile nel risultato.
QueryableSpace.Projects Tutti i progetti nell'area di lavoro.
QueryableSpace.Solutions Tutte le soluzioni nell'area di lavoro.
Soluzione Rappresenta una soluzione in Visual Studio.
Project Rappresenta la maggior parte dei progetti in Visual Studio, ma le cartelle della soluzione sono rappresentate in modo diverso in VisualStudio.Extensibility.
SolutionFolder Rappresenta una cartella della soluzione, ovvero una cartella virtuale per raggruppare progetti e file all'interno di una soluzione di Visual Studio.
Folder Rappresenta una cartella contenuta in un progetto.
file Rappresenta un file contenuto in un progetto o in una cartella della soluzione.
ExternalFile Rappresenta i file esterni a cui fa riferimento un progetto, che non è ancora supportato dai progetti C++.
Proprietà Rappresenta il set dinamico (nome/tipo debole) di proprietà di un progetto, di una configurazione o di un file.
ProjectReference Rappresenta i riferimenti da progetto a progetto, inclusi i riferimenti al progetto condiviso.
PackageReference Rappresenta un riferimento al pacchetto in una configurazione di progetto, in genere un riferimento al pacchetto NuGet.
Assemblyreference Rappresenta un assembly a cui si fa riferimento in una configurazione di progetto.
ConfigurationDimensionDefinition Rappresenta i valori per dichiarare le configurazioni del progetto.
ProjectConfiguration Rappresenta una configurazione del progetto.
ConfigurationDimension Rappresenta i valori di ogni dimensione di una singola configurazione di progetto.
OutputGroup Rappresenta una raccolta di output del progetto.
Output Rappresenta un elemento all'interno di un singolo gruppo di output.
LaunchProfile Rappresenta i profili di avvio definiti in un progetto.
PropertyPage Rappresenta le pagine delle proprietà visualizzate per il progetto.
Progetti di avvio Rappresenta i progetti di avvio definiti nella soluzione.

Tipi di clausola Di query di Project

Le clausole nella query del progetto determinano il tipo di elementi da restituire nell'output, la raccolta da cui devono provenire, le proprietà da cui devono avere e se gli elementi restituiti devono essere modificabili. Le clausole vengono usate anche per limitare e filtrare l'output.

Termine Descrizione
With Richiede la restituzione del valore di una proprietà o di una raccolta dalla query.
WithRequired Il valore delle richieste di una proprietà o di una raccolta deve essere restituito dalla query.
Where Richiede che il risultato della query venga filtrato in base a un predicato.
Recupero Ottiene invece gli elementi figlio nel risultato della query.
QueryAsync Esegue una query e recupera il risultato come IAsyncEnumerable.
AsQueryable Avvia una query da un oggetto recuperato precedente.
QueryFrom Avvia una query da una raccolta di oggetti recuperati in precedenza.
AsUpdatable Avvia l'aggiornamento dell'oggetto da un risultato della query.
ExecuteAsync Esegue una query di aggiornamento.

Tipi di azione query di progetto

Le azioni nella query del progetto determinano le modifiche apportate al sistema di progetto. Si noti che a ogni tipo di elemento di query sono disponibili azioni personalizzate. Di seguito è riportato un semplice elenco di query di azione.

Termine Descrizione
AddAssemblyReference Rappresenta l'operazione per aggiungere un riferimento all'assembly a un progetto.
AddConfigurationDimensionValue Aggiunge un nuovo valore a una dimensione di configurazione, ad esempio Configurazione o Piattaforma.
AddFiles Rappresenta l'operazione per aggiungere un file esistente al progetto.
AddLaunchProfile Rappresenta l'operazione per aggiungere un nuovo profilo di avvio a un progetto.
AddPackageReference Rappresenta l'operazione per aggiungere un riferimento al pacchetto a un progetto.
AddProjectReference Rappresenta l'operazione per aggiungere un progetto al riferimento al progetto a un progetto.
AggiungiProgetto Rappresenta l'operazione per aggiungere un progetto a una soluzione o a una cartella della soluzione.
AddProjectReferenceByPath Rappresenta l'operazione per aggiungere un progetto al riferimento al progetto al percorso di un progetto.
AddSolutionConfiguration Rappresenta l'operazione per aggiungere una configurazione della soluzione.
Compilazione Rappresenta l'operazione per compilare una soluzione.
Pulire Rappresenta l'operazione per pulire una soluzione.
ConfigurationDimensionValue Rappresenta l'operazione per impostare il valore della dimensione di una configurazione.
CreateFile Rappresenta l'operazione per creare un nuovo file in un progetto.
CreateFolder Rappresenta l'operazione per creare una cartella in un progetto.
CreateSolutionFolder Rappresenta l'operazione per aggiungere una cartella della soluzione a una soluzione o a una cartella della soluzione esistente.
Debug Rappresenta l'operazione di debug di una soluzione.
DeleteConfigurationDimensionValue Elimina un valore dalla dimensione di configurazione, ad esempio Configurazione o Piattaforma.
Elimina Rappresenta l'operazione per eliminare un progetto.
DeleteSolutionConfiguration Rappresenta l'operazione per rimuovere una configurazione della soluzione.
Distribuzione Rappresenta l'operazione per distribuire una soluzione.
DuplicateLaunchProfile Rappresenta l'operazione per duplicare un profilo di avvio esistente.
Escludi Rappresenta l'operazione da escludere da un progetto.
Ricostruzione Rappresenta l'operazione per ricompilare una soluzione.
Ricaricaprogetto Rappresenta l'operazione per ricaricare un progetto.
RemoveLaunchProfile Rappresenta l'operazione per rimuovere un profilo di avvio da un progetto.
RenameFile Rappresenta l'operazione per rinominare un file in un progetto.
RenameFolder Rappresenta l'operazione per rinominare una cartella in un progetto.
RenameSolutionFolder Rappresenta l'operazione per rinominare una cartella della soluzione.
RenameProject Rappresenta l'operazione per rinominare un progetto.
Esegui Rappresenta l'operazione per eseguire una soluzione.
RunCustomTool Rappresenta l'operazione per eseguire uno strumento personalizzato.
Salva Rappresenta l'operazione per salvare un progetto.
Setpropertyvalue Rappresenta l'operazione per impostare un valore della proprietà.
SetCopyToLocal Rappresenta l'operazione di impostazione del valore di CopyToLocal per un riferimento al progetto.
SetBuildProperty Rappresenta l'operazione di impostazione del valore di una proprietà di compilazione della configurazione del progetto.
SetEvaluatedUIPropertyValue Rappresenta l'operazione per impostare il valore valutato di una proprietà visibile dall'utente.
SetLaunchProfilePropertyValue Rappresenta l'operazione di impostazione del valore di una proprietà esposta tramite il profilo di avvio.
SetPackageReferenceVersion Rappresenta l'operazione per rinominare una cartella della soluzione.
SetSolutionFolderName Rappresenta l'operazione per impostare il nome di una cartella della soluzione.
SetStartupProjects Rappresenta l'operazione per impostare un progetto di avvio.
SetUnevaluatedUIPropertyValue Rappresenta l'operazione per impostare il valore non valutato di una proprietà visibile dall'utente.
Scaricaprogetto Rappresenta l'operazione per scaricare un progetto.
WaitIntellisenseReady Rappresenta l'operazione di attesa dello stato dell'operazione intelliSense per il progetto o la soluzione.

Per visualizzare alcuni esempi di query di progetto per attività comuni, vedere Panoramica di Project Query

Per un'estensione di esempio che usa l'API di query del progetto, vedere Esempio di query di progetto