Conceitos da API de consulta de projetos
No Visual Studio, projetos são coleções de arquivos que são compilados juntos em um executável ou alguma outra forma de saída. Já as soluções são coleções de projetos. Os projetos e soluções são representados no sistema de arquivos por arquivos de projeto e arquivos de solução, respectivamente. Para obter mais informações, consulte O que são soluções e projetos no Visual Studio?.
O sistema de projeto fica entre um arquivo de projeto ou solução no disco (por exemplo, .csproj
e .vbproj
) e vários recursos do Visual Studio, incluindo, entre outros, o Gerenciador de Soluções, designers, o depurador, serviços de linguagem, compilação e implantação. Os sistemas de projetos são um dos componentes do Visual Studio para ajudar os usuários a trabalhar e manter projetos, executar compilações para produzir resultados e testar a saída, e praticamente todas as interações que ocorrem com os arquivos contidos em um arquivo de projeto acontecem por meio do sistema de projetos. Encontre mais informações sobre sistemas de projetos aqui.
O objetivo da API de consulta de projetos é permitir que as extensões recuperem dados sobre projetos e soluções e façam alterações.
Alguns exemplos do que você pode fazer com uma consulta de projeto:
- Enumerar os arquivos de origem em um projeto
- Verificar quais pacotes NuGet são referenciados por um projeto
- Localizar todos os projetos que têm um determinado conjunto de recursos
- Adicionar novos arquivos ao projeto
- Modificar as propriedades de um projeto
Uma consulta de projeto é uma série de cláusulas que fazem referência a vários itens. Consulte a Visão geral da consulta de projetos para obter mais informações e exemplos de consultas de projetos para tarefas comuns.
Tipos de item de consulta de projetos
Há muitos itens diferentes aos quais você pode fazer referência em suas consultas de projeto. Alguns itens têm filhos ou coleções filhas que também podem ser referenciadas. Por exemplo, um WorkSpace
contém uma coleção de Projects
, e cada um dos quais contém uma coleção de Files
.
Termo | Descrição |
---|---|
WorkSpace | O espaço de trabalho de nível superior da API para fornecer o ponto de entrada. |
PropertiesAvailableStatus | O ponto de entrada para verificar se um valor de propriedade está disponível no resultado. |
QueryableSpace.Projects | Todos os projetos no espaço de trabalho. |
QueryableSpace.Solutions | Todas as soluções no espaço de trabalho. |
Solution | Representa uma solução no Visual Studio. |
Project | Representa a maioria dos projetos no Visual Studio, mas as pastas de soluções são representadas de forma diferente no VisualStudio.Extensibility. |
SolutionFolder | Representa uma pasta de solução, que é uma pasta virtual para agrupar projetos e arquivos dentro de uma solução do Visual Studio. |
Folder | Representa uma pasta contida por um projeto. |
File | Representa um arquivo contido por um projeto ou uma pasta de solução. |
ExternalFile | Representa arquivos externos referenciados por um projeto, os quais ainda não são compatíveis com projetos C++. |
Propriedade | Representa o conjunto dinâmico (nome fraco/tipo) de propriedades de um projeto, uma configuração ou um arquivo. |
RuleName | Representa o conjunto de regras em uma configuração de projeto. |
ProjectReference | Representa referências de projeto para projeto, incluindo referências de projeto compartilhadas. |
PackageReference | Representa uma referência de pacote em uma configuração de projeto, normalmente uma referência de pacote NuGet. |
AssemblyReference | Representa um assembly referenciado em uma configuração de projeto. |
ConfigurationDimensionDefinition | Representa valores para declarar configurações de projeto. |
ProjectConfiguration | Representa uma configuração de projeto. |
ConfigurationDimension | Representa valores de cada dimensão de uma configuração de projeto única. |
OutputGroup | Representa uma coleção de saída do projeto. |
Saída | Representa um item dentro de um único grupo de saída. |
LaunchProfile | Representa perfis de inicialização definidos em um projeto. |
PropertyPage | Representa as páginas de propriedades mostradas para o projeto. |
Projetos de inicialização | Representa os projetos de inicialização definidos na solução. |
Tipos de cláusula de consulta de projeto
As cláusulas em sua consulta de projeto determinam quais tipo de itens devem ser retornados na saída, de qual coleção eles devem vir, quais propriedades eles devem ter e se os itens retornados devem ser mutáveis. As cláusulas também são usadas para limitar e filtrar a saída.
Termo | Descrição |
---|---|
With | Solicita que o valor de uma propriedade/coleção seja retornado da consulta. |
WithRequired | O valor das solicitações de uma propriedade/coleção deve ser retornado da consulta. |
Onde | Solicita que o resultado da consulta seja filtrado com base em um predicado. |
Obter | Obtem itens filhos em vez do resultado da consulta. |
QueryAsync | Executa uma consulta e recupera o resultado como IAsyncEnumerable. |
AsQueryable | Inicia uma consulta a partir de um objeto recuperado anteriormente. |
QueryFrom | Inicia uma consulta de uma coleção de objetos recuperados previamente. |
AsUpdatable | Inicia a atualização do objeto a partir de um resultado de consulta. |
ExecuteAsync | Executa uma consulta de atualização. |
Tipos de filtragem de consulta de projeto
Os tipos de filtragem facilitam o refinamento e o foco dos resultados da consulta. Observe que determinados tipos de filtragem listados abaixo podem não estar disponíveis para todos os itens de consulta.
Termo | Descrição |
---|---|
ConfigurationsByName | Filtra os resultados da consulta para um nome de configuração específico. |
FilesByPath | Filtra os resultados da consulta para um caminho de arquivo específico. |
OutputGroupsByName | Filtra os resultados da consulta para um nome de grupo de saída específico. |
ProjectsByCapabilities | Filtra a consulta para recursos de projeto específicos. |
ProjectsByPath | Filtra os resultados da consulta para um caminho de projeto específico. |
ProjectsByProjectGuid | Filtra os resultados da consulta para um guid de projeto específico. |
RuleResultsByRuleName | Filtra a consulta para um nome de regra específico. |
Ignorar | Executa um resultado de consulta para um número limitado de itens ignorando os demais. |
Tipos de ação de consulta de projetos
As ações em uma consulta do projeto determinam quais modificações são feitas no sistema do projeto. Observe que os tipos de item de cada consulta têm suas próprias ações disponíveis para eles. Abaixo está uma lista simples de consultas de ação.
Termo | Descrição |
---|---|
AddAssemblyReference | Representa a operação de adicionar uma referência de assembly a um projeto. |
AddConfigurationDimensionValue | Adiciona um novo valor a uma dimensão de configuração (por exemplo, Configuração ou Plataforma). |
AddFiles | Representa a operação de adicionar um arquivo existente ao projeto. |
AddLaunchProfile | Representa a operação de adicionar um novo perfil de inicialização a um projeto. |
AddPackageReference | Representa a operação de adicionar uma referência de pacote a um projeto. |
AddProjectReference | Representa a operação de adicionar um projeto à referência de projeto a um projeto. |
AddProject | Representa a operação de adicionar um projeto a uma solução ou a uma pasta de solução. |
AddProjectReferenceByPath | Representa a operação de adicionar um projeto à referência do projeto ao caminho de um projeto. |
AddSolutionConfiguration | Representa a operação de adicionar uma configuração de solução. |
Compilação | Representa a operação de compilar uma solução. |
Clean | Representa a operação de limpar uma solução. |
ConfigurationDimensionValue | Representa a operação de definir o valor da dimensão de uma configuração. |
CreateFile | Representa a operação de criar um novo arquivo em um projeto. |
CreateFolder | Representa a operação de criar uma pasta em um projeto. |
CreateSolutionFolder | Representa a operação de adicionar uma pasta de solução a uma solução ou a uma pasta de solução existente. |
Depurar | Representa a operação de depurar uma solução. |
DeleteConfigurationDimensionValue | Exclui um valor da dimensão de configuração (por exemplo, Configuração ou Plataforma). |
Excluir | Representa a operação de excluir um projeto. |
DeleteSolutionConfiguration | Representa a operação de remover uma configuração de solução. |
Implantar | Representa a operação de implantar uma solução. |
DuplicateLaunchProfile | Representa a operação de duplicar um perfil de inicialização existente. |
Excluir | Representa a operação de excluir um projeto. |
Recompilar | Representa a operação de recompilar uma solução. |
ReloadProject | Representa a operação de recarregar um projeto. |
RemoveLaunchProfile | Representa a operação de remover um perfil de inicialização de um projeto. |
RenameFile | Representa a operação de renomear um arquivo em um projeto. |
RenameFolder | Representa a operação de renomear uma pasta em um projeto. |
RenameSolutionFolder | Representa a operação de renomear uma pasta de solução. |
RenomearProjeto | Representa a operação de renomear um projeto. |
Executar | Representa a operação de executar uma solução. |
RunCustomTool | Representa a operação de executar uma ferramenta personalizada. |
Salvar | Representa a operação de salvar um projeto. |
SetPropertyValue | Representa a operação de definir um valor de propriedade. |
SetCopyToLocal | Representa a operação de definir o valor de CopyToLocal para uma referência de projeto. |
SetBuildProperty | Representa a operação de definir o valor de uma propriedade de compilação de configuração de projeto. |
SetEvaluatedUIPropertyValue | Representa a operação de definir o valor avaliado de uma propriedade visível pelo usuário. |
SetLaunchProfilePropertyValue | Representa a operação de definir o valor de uma propriedade exposta por meio do perfil de inicialização. |
SetPackageReferenceVersion | Representa a operação de renomear uma pasta de solução. |
SetSolutionFolderName | Representa a operação de definir um nome de pasta de solução. |
SetStartupProjects | Representa a operação de definir um projeto de inicialização. |
SetUnevaluatedUIPropertyValue | Representa a operação de definir o valor não avaliado de uma propriedade visível pelo usuário. |
UnloadProject | Representa a operação de descarregar um projeto. |
WaitIntellisenseReady | Representa a operação de aguardar o progresso da operação intellisense do projeto ou solução estar pronta. |
Tipos de atualizações na consulta do projeto
Essas consultas oferecem suporte ao monitoramento de atualizações feitas nos resultados da consulta.
Termo | Descrição |
---|---|
TrackUpdatesAsync | Representa a operação de controlar as alterações em uma consulta. |
Conteúdo relacionado
Para ver alguns exemplos de consultas de projeto para tarefas comuns, consulte a Visão geral da consulta de projetos
Para obter uma extensão de exemplo que usa a API de consulta do projeto, consulte Exemplo de consulta de projeto