Расширяемость открытых папок

Функция открытия папки позволяет пользователям открывать любую базу кода в Visual Studio, не требуя наличия файлов проекта или решения. Открытая папка предоставляет пользователям функции, которые требуются для Visual Studio, например:

  • Интеграция обозревателя решений и поиск
  • Цветовое выделение ошибок
  • Переход к навигации
  • Поиск в файлах

При использовании с рабочими нагрузками, такими как для .NET и C++, пользователи также получают следующие сведения:

  • Расширенная технология IntelliSense
  • Зависящие от языка функции

С помощью открытой папки авторы расширений могут создавать широкие возможности для любого языка. Существуют API-интерфейсы для поддержки сборки, отладки и поиска символов для любого файла в базе кода пользователя. Текущие расширители могут обновлять существующие компоненты Visual Studio, чтобы понять код без изучения проектов или решения.

API без систем проектов

Исторически сложилось, что Visual Studio понимает только файлы в решении и его проектах, использующих системы проектов. Система проектов отвечает за функциональность и взаимодействие с пользователем загруженного проекта. Она понимает, какие файлы содержит проект, визуально представляет содержимое проекта, зависимости от других проектов и изменение базового файла проекта. Это можно сделать с помощью иерархий и возможностей, с которыми другие компоненты работают от имени пользователя. Не все базы кода хорошо представлены в структуре проекта и решения. Хорошим примером являются языки сценариев и открытый код, написанный в C++ для Linux. При использовании открытой папки Visual Studio предоставляет пользователям новый способ взаимодействия с исходным кодом.

API-интерфейсы открытых папок находятся в пространстве имен Microsoft.VisualStudio.Workspace.* и доступны для расширителей для создания и использования данных или действий над файлами в открытой папке. Расширения могут использовать эти API для предоставления функциональных возможностей для многих областей, в том числе:

  • Рабочие области — начальная точка расширяемости открытых папок, это рабочая область и ее API-интерфейсы.
  • Контексты файлов и действия — специфическая для файлов логика операций с кодом, предоставляемая через контексты файлов.
  • Индексирование — получение и сохранение данных о рабочих областях открытой папки.
  • Языковые службы — интеграция языковых служб в рабочие области открытых папок.
  • Сборка — поддержка сборок для рабочих областей открытых папок.

Для поддержки открытой папки в функциях, использующих следующие типы, необходимо внедрить новые API:

  • IVsHierarchy
  • IVsProject
  • DTE

Отзывы, комментарии, проблемы

Функция открытых папок и API Microsoft.VisualStudio.Workspace.* находятся на этапе активной разработки. Если наблюдается непредвиденное поведение, обратитесь к сведениям об известных проблемах в выпуске. Сообщество разработчиков — это рекомендуемое место для голосования и создания решений любых проблем. Для каждого отзыва мы настоятельно рекомендуем подробное описание проблемы. Включите версию Visual Studio, для которой вы занимаетесь разработкой, интерфейсы API, которые вы используете (как реализованные, так и взаимодействующие), ожидаемый результат и фактический результат. По возможности включите дамп процесса devenv.exe. Используйте отслеживание проблем GitHub, чтобы отправить отзыв по этой и связанной документации.

Следующие шаги