Анатомия пакета VSIX

Пакет VSIX — это .vsix файл, содержащий одно или несколько расширений Visual Studio, а также метаданные Visual Studio, которые используются для классификации и установки расширений. Эти метаданные содержатся в манифесте VSIX и файле [Content_Types].xml . Пакет VSIX также может содержать один или несколько файлов Extension.vsixlangpack для предоставления локализованного текста установки и может содержать дополнительные пакеты VSIX для установки зависимостей.

Формат пакета VSIX соответствует стандарту Open Packaging Conventions (OPC). Пакет содержит двоичные файлы и вспомогательные файлы, а также файл [Content_Types].xml и файл манифеста .vsix . Один пакет VSIX может содержать выходные данные нескольких проектов или даже несколько пакетов с собственными манифестами.

Примечание.

Имена файлов, включенных в пакеты VSIX, не должны содержать пробелы, а также символы, зарезервированные в универсальных идентификаторах ресурсов (URI), как определено в разделе [RFC2396].

Манифест VSIX

Манифест VSIX содержит сведения об установленном расширении и следует схеме VSIX. Дополнительные сведения см . в справочнике по схеме расширения VSIX 2.0.

Манифест VSIX должен быть назван extension.vsixmanifest , если он включен в .vsix файл.

содержимое.

Пакет VSIX может содержать шаблоны, элементы панели элементов, VSPackage или любое другое расширение, поддерживаемое Visual Studio.

Языковые пакеты

Пакет VSIX может содержать один или несколько файлов Extension.vsixlangpack для предоставления локализованного текста во время установки. Дополнительные сведения см. в разделе "Локализация пакетов VSIX".

Зависимости и ссылки

Пакет VSIX может содержать другие пакеты VSIX в виде ссылок. Каждый из этих других пакетов должен содержать собственный манифест VSIX.

Если пользователь пытается установить расширение с зависимостями, установщик проверяет, установлены ли необходимые сборки в пользовательской системе. Если необходимые сборки не найдены, расширения и Обновления отображает список отсутствующих сборок.

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

Если проект в решении с несколькими проектами содержит ссылку на другой проект в том же решении, пакет VSIX включает зависимости этого проекта. Это поведение можно переопределить, выбрав ссылку для внутреннего проекта, а затем в окне "Свойства " задайте для групп выходных данных, включенных в свойство VSIX значение BuiltProjectOutputGroup.

Чтобы включить вспомогательные библиотеки DLL из ссылочных сборок в пакет VSIX, добавьте SatelliteDllsProjectOutputGroup в группы вывода, включенные в свойство VSIX .

Расположение установки

Во время установки расширения и Обновления ищет содержимое пакета VSIX в папке в папке%LocalAppData%\Microsoft\VisualStudio\{version}\Extensions.

По умолчанию установка применяется только к текущему пользователю, так как %LocalAppData% — это каталог, зависящий от пользователя. Однако если для элемента манифеста Trueзадано AllUsers значение, расширение будет установлено ..\{VisualStudioInstallationFolder}\Common7\IDE\Extensions и будет доступно всем пользователям компьютера.

[Content_Types].xml

Файл [Content_Types].xml определяет типы файлов в развернутом .vsix файле. Visual Studio использует этот файл во время установки пакета, но не устанавливает сам файл. Дополнительные сведения об этом файле см. в разделе Структура файла [Content_types].xml.

Файл [Content_Types].xml требуется стандартом Open Packaging Conventions (OPC). Дополнительные сведения о OPC см. в статье OPC: новый стандарт упаковки данных.