Поделиться через


Основные понятия API запросов проекта

В Visual Studio проекты представляют собой коллекции файлов, скомпилированных вместе в исполняемый файл или другую форму выходных данных, а решения — коллекции проектов. Проекты и решения представлены в файловой системе файлами проекта и файлами решений соответственно. Дополнительные сведения см. в статье "Что такое решения и проекты в Visual Studio?".

Система проекта находится между файлом проекта или решения на диске (например, .csproj и.vbproj) и различными функциями Visual Studio, включая, но не ограничивается, Обозреватель решений, конструкторами, отладчиком, языковыми службами, сборкой и развертыванием. Системы проектов являются частью компонентов Visual Studio, которые помогают пользователям работать с проектами и поддерживать проекты, выполнять сборки для создания результатов, а также тестировать выходные данные, а также практически все взаимодействия, которые происходят с файлами, содержащимися в файле проекта, происходит через систему проекта. Дополнительные сведения о системах проектов см. здесь.

Цель API запросов проекта — разрешить расширениям получать данные о проектах и решениях и вносить изменения.

Некоторые примеры того, что можно сделать с помощью запроса проекта:

  • Перечисление исходных файлов в проекте
  • Проверьте, на какие пакеты NuGet ссылается проект
  • Поиск всех проектов с заданным набором возможностей
  • Добавление новых файлов в проект
  • Изменение свойств проекта

Запрос проекта — это ряд предложений, ссылающихся на различные элементы. Дополнительные сведения см. в обзоре запроса проекта и примеры запросов проекта для распространенных задач.

Типы элементов запроса проекта

В запросах проекта можно ссылаться на множество различных элементов. Некоторые элементы имеют дочерние или дочерние коллекции, на которые также можно ссылаться. Например, объект WorkSpace содержит коллекцию Projects, каждая из которых содержит коллекцию Files.

Срок Description
Рабочей области Рабочая область верхнего уровня API для предоставления точки входа.
PropertiesAvailableStatus Точка входа, проверка, доступно ли значение свойства в результате.
QueryableSpace.Projects Все проекты в рабочей области.
QueryableSpace.Solutions Все решения в рабочей области.
Решение Представляет решение в Visual Studio.
Project Представляет большинство проектов в Visual Studio, но папки решений представлены по-разному в VisualStudio.Extensibility.
SolutionFolder Представляет папку решения, которая является виртуальной папкой для группирования проектов и файлов в решении Visual Studio.
Папка Представляет папку, содержащуюся в проекте.
Файлы Представляет файл, содержащийся в проекте или папке решения.
ExternalFile Представляет внешние файлы, на которые ссылается проект, который пока не поддерживается проектами C++.
Свойство Представляет динамический набор (слабый тип или имя) свойств проекта, конфигурации или файла.
RuleName Представляет набор правил в конфигурации проекта.
ProjectReference Представляет ссылки на проект в проект, включая общие ссылки на проект.
PackageReference Представляет ссылку на пакет в конфигурации проекта, как правило, ссылку на пакет NuGet.
AssemblyReference Представляет указанную сборку в конфигурации проекта.
ConfigurationDimensionDefinition Представляет значения для объявления конфигураций проекта.
ProjectConfiguration Представляет конфигурацию проекта.
ConfigurationDimension Представляет значения каждого измерения отдельной конфигурации проекта.
OutputGroup Представляет одну коллекцию выходных данных проекта.
Выходные данные Представляет один элемент внутри одной выходной группы.
LaunchProfile Представляет профили запуска, определенные в проекте.
PropertyPage Представляет страницы свойств, отображаемые для проекта.
Запуск проектов Представляет определенные проекты запуска в решении.

Типы предложений запросов проекта

Предложения в запросе проекта определяют тип элементов, возвращаемых в выходных данных, из какой коллекции они должны поступать, какие свойства они должны иметь, и следует ли изменять возвращаемые элементы. Предложения также используются для ограничения и фильтрации выходных данных.

Срок Description
With Запрашивает значение свойства или коллекции, возвращаемое из запроса.
WithRequired Запросы значения свойства или коллекции должны быть возвращены из запроса.
Где Запрашивает отфильтрованный результат запроса на основе предиката.
Получить Возвращает дочерние элементы вместо результата запроса.
QueryAsync Выполняет запрос и извлекает результат в виде IAsyncEnumerable.
AsQueryable Запускает запрос из предыдущего полученного объекта.
QueryFrom Запускает запрос из коллекции предыдущих извлеченных объектов.
AsUpdatable Начинает обновлять объект из результата запроса.
ExecuteAsync Выполняет запрос на обновление.

Типы фильтрации запросов проекта

Типы фильтрации упрощают уточнение и фокус результатов запроса. Обратите внимание, что некоторые типы фильтрации, перечисленные ниже, могут быть недоступны для каждого элемента запроса.

Срок Description
ConfigurationsByName Фильтрует результаты запроса по определенному имени конфигурации.
FilesByPath Фильтрует результаты запроса по определенному пути к файлу.
OutputGroupsByName Фильтрует результаты запроса по определенному имени выходной группы.
ProjectsByCapabilities Фильтрует запрос по определенным возможностям проекта.
ProjectsByPath Фильтрует результаты запроса по определенному пути проекта.
ProjectsByProjectGuid Фильтрует результаты запроса по определенному guid проекта.
RuleResultsByRuleName Фильтрует запрос по определенному имени правила.
Пропустить Выполняет результат запроса к ограниченному количеству элементов, пропуская их.

Типы действий запроса проекта

Действия в запросе проекта определяют, какие изменения вносятся в систему проекта. Обратите внимание, что для каждого типа элементов запроса доступны собственные действия. Ниже приведен простой список запросов действий.

Срок Description
AddAssemblyReference Представляет операцию добавления ссылки на сборку в проект.
AddConfigurationDimensionValue Добавляет новое значение в измерение конфигурации (например, конфигурация или платформа).
AddFiles Представляет операцию добавления существующего файла в проект.
AddLaunchProfile Представляет операцию добавления нового профиля запуска в проект.
AddPackageReference Представляет операцию добавления ссылки на пакет в проект.
AddProjectReference Представляет операцию добавления проекта в ссылку на проект.
AddProject Представляет операцию добавления проекта в решение или папку решения.
AddProjectReferenceByPath Представляет операцию добавления проекта в ссылку на проект в путь проекта.
AddSolutionConfiguration Представляет операцию добавления конфигурации решения.
Сборка Представляет операцию для создания решения.
Очистить Представляет операцию очистки решения.
ConfigurationDimensionValue Представляет операцию для задания значения измерения конфигурации.
CreateFile Представляет операцию создания нового файла в проекте.
CreateFolder Представляет операцию создания папки в проекте.
CreateSolutionFolder Представляет операцию добавления папки решения в решение или существующую папку решения.
Отладка Представляет операцию отладки решения.
DeleteConfigurationDimensionValue Удаляет значение из измерения конфигурации (например, конфигурация или платформа).
Удаление Представляет операцию удаления проекта.
DeleteSolutionConfiguration Представляет операцию удаления конфигурации решения.
Развернуть Представляет операцию развертывания решения.
ДубликатLaunchProfile Представляет операцию для дублирования существующего профиля запуска.
Исключить Представляет операцию исключения проекта.
Перестроение Представляет операцию перестроения решения.
ReloadProject Представляет операцию перезагрузки проекта.
RemoveLaunchProfile Представляет операцию удаления профиля запуска из проекта.
RenameFile Представляет операцию переименования файла в проекте.
ПереименованиеFolder Представляет операцию переименования папки в проекте.
RenameSolutionFolder Представляет операцию переименования папки решения.
ПереименоватьProject Представляет операцию переименования проекта.
Выполнить Представляет операцию запуска решения.
RunCustomTool Представляет операцию для запуска настраиваемого средства.
Сохранить Представляет операцию сохранения проекта.
SetPropertyValue Представляет операцию для задания значения свойства.
SetCopyToLocal Представляет операцию задания значения CopyToLocal для ссылки на проект.
SetBuildProperty Представляет операцию задания значения свойства сборки конфигурации проекта.
SetEvaluatedUIPropertyValue Представляет операцию для задания вычисляемого значения видимого пользователем свойства.
SetLaunchProfilePropertyValue Представляет операцию задания значения свойства, предоставляемого через профиль запуска.
SetPackageReferenceVersion Представляет операцию переименования папки решения.
SetSolutionFolderName Представляет операцию для задания имени папки решения.
SetStartupProjects Представляет операцию установки запускаемого проекта.
SetUnevaluatedUIPropertyValue Представляет операцию, чтобы задать неоценимое значение видимого пользователем свойства.
ВыгрузкаProject Представляет операцию выгрузки проекта.
WaitIntellisenseReady Представляет операцию ожидания выполнения операции intellisense проекта или решения, чтобы быть готовым.

Типы запросов проекта Обновления

Эти запросы поддерживают мониторинг обновлений, внесенных в результаты запроса.

Срок Description
Track Обновления Async Представляет операцию отслеживания изменений в запросе.

Дополнительные сведения о некоторых примерах запросов проекта для распространенных задач см. в разделе " Обзор запросов проекта"

Пример расширения, использующего API запросов проекта, см . в примере запроса проекта