Анатомия пакета 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 содержит сведения об установленном расширении и соответствует схеме VSX. Дополнительные сведения см . в справочнике по схеме расширения VSIX 1.0. Пример манифеста VSIX см. в разделе PackageManifest (корневой элемент, схема VSX).
Манифест 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\14.0\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: новый стандарт упаковки данных на веб-сайте MSDN.
Поиск, установка и управление расширениями для Visual Studio
Расширения — это пакеты кода, которые выполняются в Visual Studio и предоставляют новые или улучшенные функции. Расширения могут быть элементами управления, примерами, шаблонами, инструментами или другими компонентами, которые добавляют функциональные возможности в Visual Studio, например Live Share или GitHub Copilot.
Сведения о создании расширений Visual Studio см. в разделе Visual Studio SDK. Сведения об использовании расширений см. на страницах отдельных расширений в Visual Studio Marketplace. Дополнительные сведения о поиске расширений см. в записи блога Где мои избранные расширения в Visual Studio 2022?.
Дополнительные сведения о новой модели расширяемости в настоящее время в предварительной версии см. в записи блога Build Better Extensions with VisualStudio.Extensibility (preview 3).
Расширения — это пакеты кода, которые выполняются в Visual Studio и предоставляют новые или улучшенные функции. Расширения могут быть элементами управления, примерами, шаблонами, инструментами или другими компонентами, которые добавляют функциональные возможности в Visual Studio, например Live Share или GitHub Copilot.
Сведения о создании расширений Visual Studio см. в разделе Visual Studio SDK. Сведения об использовании расширений см. на страницах отдельных расширений в Visual Studio Marketplace.
Диалоговое окно «Управление расширениями»
В интегрированной среде разработки Visual Studio диалоговое окно «Управление расширениями » — это средство, используемое для поиска, установки и управления расширениями Visual Studio. Чтобы открыть диалоговое окно Управление расширениями, выберите Расширения>Управление расширениями. Или введите расширения в поле поиска и выберите «Управление расширениями«.

Левая панель классифицирует расширения по установленным, доступным в Visual Studio Marketplace (Online) и доступными обновлениями. Диспетчер перемещаемых расширений хранит список всех расширений Visual Studio, которые вы установили на любом компьютере или экземпляре Visual Studio. С его помощью вы легко сможете находить нужные вам расширения.
Поиск и установка расширений
Расширения можно установить в Visual Studio Marketplace или в диалоговом окне «Управление расширениями » в Visual Studio.
Чтобы установить расширения из Visual Studio, выполните указанные ниже действия.
- В диалоговом окне Расширения>Управление расширениями найдите расширение, которое вы намерены установить. (Если известно имя или часть имени расширения, можно выполнить поиск в окне Поиск.)
- Щелкните Скачать.
После завершения скачивания вы увидите уведомление в нижней части диалогового окна «Управление расширениями «: «Расширение запланировано на установку. Расширение будет установлено после закрытия всех экземпляров Visual Studio».
При попытке установить расширение, имеющее зависимости, то установщик проверяет, установлены ли эти зависимости. Если они не установлены, то в диалоговом окне Управление расширениями отображается список зависимостей, которые требуется установить перед установкой этого расширения.
Установка без использования диалогового окна «Управление расширениями»
Расширения, которые были упакованы в VSIX-файлах , могут быть доступны в расположениях, отличных от Visual Studio Marketplace. Несмотря на то что VSIX-файлы не обнаруживаются в диалоговом окне Расширения>Управление расширениями, такой файл можно установить, дважды щелкнув его или выбрав файл и нажав клавишу ВВОД. После этого следуйте инструкциям. После установки такое расширение можно будет включить, отключить или удалить в диалоговом окне Управление расширениями.
- Visual Studio Marketplace содержит расширения VSIX и MSI. Диалоговое окно «Управление расширениями» не может включать или отключать расширения на основе MSI.
- Если расширение MSI содержит файл extension.vsixmanifest, оно появляется в диалоговом окне Управление расширениями.
Удаление или отключение расширения
Если требуется прекратить использование расширения, его можно отключить или удалить. Отключенное расширение сохранится, но не будет загружаться. Найдите расширение и выберите «Удалить » или «Отключить«. Перезапустите Visual Studio, чтобы выгрузить отключенное расширение.
Отключать можно только расширения VSIX, но не расширения, которые были установлены с помощью MSI. Расширения, установленные с помощью MSI, можно только удалить.
Управление расширениями
Если вы управляете расширениями для организации или хотите узнать больше об автоматическом обновлении расширений, неответствующих уведомлениях и т. д., вы находитесь в правильном месте.
Расширения на уровне пользователя и администратора
Большинство расширений являются на пользователя и устанавливаются в папку %LocalAppData%\Microsoft\VisualStudio<\Visual Studio version>\Extensions\ . Несколько расширений являются административными расширениями и устанавливаются в папку <>установки Visual Studio\Common7\IDE\Extensions\.
Чтобы защитить систему от расширений, которые могут содержать ошибки или вредоносный код, можно ограничить для каждого пользователя расширения загружаться только в том случае, если Visual Studio выполняется с обычными разрешениями пользователя. Это означает, что расширения на уровне пользователя отключаются при запуске Visual Studio с повышенными разрешениями.
Чтобы ограничить загрузку расширений на уровне пользователя, выполните указанные ниже действия.
- Откройте страницу параметров расширений (Сервис>Параметры>Среда>Расширения).
- Снимите флажок Загружать расширения пользователей при выполнении от имени администратора.
- Перезапустите Visual Studio.
Автоматическое обновление расширений
Расширения обновляются автоматически при появлении новой версии в Visual Studio Marketplace. Новая версия расширения обнаруживается и устанавливается в фоновом режиме. При следующем открытии Visual Studio будет запущена новая версия расширения.
Функцию автоматического обновления можно отключить для всех или только определенных расширений.
- Чтобы отключить автоматическое обновление для всех расширений, щелкните ссылку Измените параметры расширений в диалоговом окне Расширения>Управление расширениями. В диалоговом окне Параметры снимите флажок Автоматически обновлять расширения.
- Чтобы отключить автоматическое обновление для конкретного расширения, снимите флажок Автоматически обновлять это расширение в области сведений о расширении в правой части диалогового окна Управление расширениями.
Уведомления об аварийном завершении работы или зависаниях
Visual Studio уведомляет вас о тех расширениях, которые могли вызвать аварийное завершение предыдущего сеанса. Когда Visual Studio аварийно завершает работу, сохраняется стек исключений. При следующем запуске Visual Studio стек проверяется, начиная с листового узла, в направлении базы. Если Visual Studio определяет, что кадр принадлежит модулю, который является частью установленного и включенного расширения, система выводит уведомление.
Visual Studio оповещает еще и о тех расширениях, которые могут приводить к недоступности интерфейса.
Получив такое оповещение, вы можете проигнорировать его или выполнить одно из следующих действий.
- Выберите Отключить это расширение. Visual Studio отключает расширение и сообщает, нужно ли перезагрузить компьютер, чтобы отключение вступило в силу. Если потребуется, вы можете снова включить расширение в диалоговом окне Расширения>Управление расширениями.
- Выберите Больше не показывать это сообщение.
- Если уведомление относилось к аварийному завершению в предыдущем сеансе, в Visual Studio больше не будет отображаться уведомление при аварийном завершении работы этого расширения. Этот выбор не влияет на уведомления Visual Studio о зависаниях, связанных с этим расширением, а также об аварийных завершениях и зависаниях, связанных с другими расширениями.
- Если же уведомление относилось к зависанию, в интегрированной среде разработки (IDE) больше не будут появляться уведомления о том, что это расширение связано с зависаниями. В Visual Studio по-прежнему будут отображаться уведомления об аварийном завершении работы этого расширения, а также об аварийном завершении работы и зависаниях других расширений.
Уведомление о зависании или аварийном завершении пользовательского интерфейса означает только то, что один из модулей конкретного расширения находился в стеке в тот момент, когда произошло аварийное завершение. Это не обязательно означает, что само расширение было виновником. Возможно, расширение вызвало внутренний код Visual Studio, который привел к аварийному завершению или зависанию пользовательского интерфейса. Однако уведомление может по-прежнему быть полезным, если расширение, которое привело к неответственности пользовательского интерфейса или аварийному сбою, не важно для вас. Отключив такое расширение, вы сможете избежать аналогичных проблем в будущем без ущерба для производительности.
Примеры
При установке примера из сети решение сохраняется в двух местоположениях:
- Рабочий экземпляр сохраняется в расположении, указанном при создании проекта.
- Отдельный контрольный экземпляр сохраняется на компьютере.
С помощью диалогового окна Расширения>Управление расширениями можно выполнить следующие задачи, связанные с примерами.
- Отобразить список контрольных экземпляров установленных образцов.
- Отключить или удалить контрольный экземпляр образца.
- Установить пакеты примеров — коллекции примеров, связанных с определенной технологией или функцией.
- Установить отдельные примеры из сети.
- Просмотреть уведомления об обновлениях, когда будут опубликованы изменения в исходном коде для установленных примеров.
- Обновите главную копию установленного примера при наличии уведомления об обновлении.
Связанный контент
- SDK для Visual Studio
- Страница расширяемости Visual Studio.
- Visual Studio Marketplace
- Поддержка пакета SDK для Visual Studio
Разработка и встраивание расширений .vsix в Visual Studio на C# для чайников
Странно говорить о таких понятиях, как расширение функционала такого продукта, как Visual Studio в контексте «для чайников», но есть люди, которые и журналы смотрят с последней страницы. Эта статья для тех, кто уже имеет представление как обращаться со студией, но пока мало знает, чем она может помочь, и уже очень хочется добавить свою фичу.
Ожидаемые результаты
Научиться создавать и встраивать VSPackage расширения в VS 2012, на примере расширения для запуска калькулятора прямо из студии.
Что потребуется
Для разработки расширения потребуется сама студия, я воспользуюсь VS 2012, а также необходимо установить VS SDK 2012. Отмечу, что для разработки в VS 2010 есть VSPackage Builder , и этот инструмент помогает создавать расширения в дизайнере. Мы же обойдемся только шаблоном проекта предоставляемого SDK.
Шаг 1. Создаем проект
Файл->Создать->Проект->Шаблоны->Другие типы проектов-Расширение среды->Visual Studio Package и задаем имя проекта VSPackageCalc.
Далее следуем указаниям мастера, обратив внимание на следующие окна
Шаг 2. Редактируем способ запуска и отображение кнопки в студии
Искомый файл: VSPackageCalc.vsct — файл с расширением .vsct
Определимся где отобразить кнопку и как запускать расширение, Отмечу два варианта отображения:
— добавление пункта меню в меню «Сервис»
— добавление панели кнопок в тулбарГруппа команд для меню «Сервис» задается так (код уже сгенерирован):
Как будет назваться панель инструментов в меню панелей инструментов (оставим имя по умолчанию VSPackageCalc Toolbar):
Честно говоря идентификаторов типа IDM_VS_MENU_TOOLS, указывающих в какой раздел меню можно поместить вызов функции расширения, много, и разбираться со всеми не входит в рамки статьи, но кое-что можно почерпнуть в MSDN
Далее определимся с видом кнопки тулбара. Сначала удалим лишнее кнопки из нашего тулбара (по умолчанию создаются инструменты для редактирования), заменив код с описанием группы кнопок тулбара расширения:
на код одного элемента тулбара:
Далее можно редактировать текст и отображения самого пункта меню:
Можно удалить элемент Icon (иконку), и тогда будет отображаться только текст. Иначе при отображении в тулбаре будет иконка, а чтобы показать и текст к ней, придется настраивать отдельно через инструмент настройки отображения кнопок тулбара в самой студии.
Шаг 3. Описание функционала расширения
Для задания функционала нашего расширения, его нужно описать в файле VSPackageCalcPackage.cs, отредактировав метод обработки нажатия на кнопку меню, который также был уже сгенерирован при создании проекта. Удалим все, что внутри метода и заменим на запуск приложения — стандартного калькулятора:
private void MenuItemCallback(object sender, EventArgs e) < // Запуск процесса: Process.Start("Calc.exe"); >Шаг 4. Встраивание расширения
Ну вот почти и готово, осталось только собрать проект и в папке построения запустить VSPackageCalc.vsix.
Процесс установки
После установки необходимо перезапустить студию.
Шаг 5. Использование встроенной фичи
Запуск из меню Сервис
Запуск из тулбара
Сначала нужно добавить панель инструментов VSPackageCalc Toolbar средствами VS — правая мышь по тулбару и отметить галочкой. Тула появилась на панели:
Заключение
Пусть фича не очень полезная и не сложная получилась, но, надеюсь, полученные знания подтолкнут к более глубокому изучению вопроса разработки расширений для Visual Studio.
VS Code — Как установить любое расширение оффлайн. Скачать VSIX и установить. Но как?
не работает. Тогда можно воспользоваться следующей инструкцией для скачивания VSIX файла и последующей установки расширения.
Шаблон для вставки URL
В данный шаблон нужно будет вставить вместо переменных нужные значения из url нужного расширения
$ = ?
$ = ?
$ = ?Мой пример для скачивания — C# for Visual Studio Code (powered by OmniSharp).

Url измененный для скачивания.
Устанавливаем расширение из файла
Далее переименовываем данный файл в расширение vsix. В моём случае получилось.

Microsoft.VisualStudio.Services.VSIXPackage.vsix
Далее открываем VsCode в этой папке
И запускаем установку следующей командой
code —install-extension Microsoft.VisualStudio.Services.VSIXPackage.vsix