Как удалять расширения для visual studio
Странно говорить о таких понятиях, как расширение функционала такого продукта, как 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, отредактировав метод обработки нажатия на кнопку меню, который также был уже сгенерирован при создании проекта. Удалим все, что внутри метода и заменим на запуск приложения — стандартного калькулятора:
Шаг 4. Встраивание расширения
Ну вот почти и готово, осталось только собрать проект и в папке построения запустить VSPackageCalc.vsix.
После установки необходимо перезапустить студию.
Шаг 5. Использование встроенной фичи
Сначала нужно добавить панель инструментов VSPackageCalc Toolbar средствами VS — правая мышь по тулбару и отметить галочкой. Тула появилась на панели:
Заключение
Пусть фича не очень полезная и не сложная получилась, но, надеюсь, полученные знания подтолкнут к более глубокому изучению вопроса разработки расширений для Visual Studio.
Расширения — это пакеты кода, которые выполняются в Visual Studio и предоставляют новые или улучшенные функции. К числу расширений относятся элементы управления, примеры, шаблоны, инструменты или другие компоненты, расширяющие возможности Visual Studio, например Live Share или Visual Studio IntelliCode.
Сведения о создании расширений Visual Studio см. в разделе Visual Studio SDK. Сведения об использовании расширений см. на страницах отдельных расширений в Visual Studio Marketplace. Дополнительные сведения о поиске расширений см. в записи блога Где мои избранные расширения в Visual Studio 2022?.
Сведения о создании расширений Visual Studio см. в разделе Visual Studio SDK. Сведения об использовании расширений см. на страницах отдельных расширений в Visual Studio Marketplace.
Диалоговое окно "Расширения и обновления"
Используйте диалоговое окно Расширения и обновления для установки и управления расширениями Visual Studio. Чтобы открыть диалоговое окно Расширения и обновления, выберите Средства > Расширения и обновления или введите Расширения в поле поиска Быстрый запуск.
Диалоговое окно "Управление расширениями"
Используйте диалоговое окно Управление расширениями для установки расширений Visual Studio и управления ими. Чтобы открыть диалоговое окно Управление расширениями, выберите Расширения > Управление расширениями. Или введите строку Расширения в поле поиска, а затем выберите Управление расширениями.
На левой панели расширения разделены на установленные, доступные в Visual Studio Marketplace (онлайн) и имеющие доступные обновления. Диспетчер перемещаемых расширений хранит список всех расширений 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 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\\Extensions\ . Некоторые расширения устанавливаются на уровне администратора в папку \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 больше не будет отображаться уведомление при аварийном завершении работы этого расширения. Этот выбор не влияет на уведомления Visual Studio о зависаниях, связанных с этим расширением, а также об аварийных завершениях и зависаниях, связанных с другими расширениями.
- Если же уведомление относилось к зависанию, в интегрированной среде разработки (IDE) больше не будут появляться уведомления о том, что это расширение связано с зависаниями. В Visual Studio по-прежнему будут отображаться уведомления об аварийном завершении работы этого расширения, а также об аварийном завершении работы и зависаниях других расширений.
Выберите Дополнительные сведения, чтобы перейти к этой странице.
Уведомление о зависании или аварийном завершении пользовательского интерфейса означает только то, что один из модулей конкретного расширения находился в стеке в тот момент, когда произошло аварийное завершение. Это не обязательно означает, что расширение стало причиной сбоя. Возможно, расширение вызвало внутренний код Visual Studio, который привел к аварийному завершению или зависанию пользовательского интерфейса. Но эти уведомления могут быть полезны, если расширение, приводящее к аварийному завершению или зависанию пользовательского интерфейса, не очень важно для вас. Отключив такое расширение, вы сможете избежать аналогичных проблем в будущем без ущерба для производительности.
Примеры
При установке примера из сети решение сохраняется в двух местоположениях:
Рабочий экземпляр сохраняется в расположении, указанном при создании проекта.
Отдельный контрольный экземпляр сохраняется на компьютере.
С помощью диалогового окна Сервис > Расширения и обновления можно выполнить следующие задачи, связанные с примерами.
С помощью диалогового окна Расширения > Управление расширениями можно выполнить следующие задачи, связанные с примерами.
Отобразить список контрольных экземпляров установленных образцов.
Отключить или удалить контрольный экземпляр образца.
Установить пакеты примеров — коллекции примеров, связанных с определенной технологией или функцией.
Установить отдельные примеры из сети.
Просмотреть уведомления об обновлениях, когда будут опубликованы изменения в исходном коде для установленных примеров.
Обновить контрольный экземпляр установленного примера при получении уведомления об обновлении.
Расширения — это пакеты кода, которые выполняются в Visual Studio и предоставляют новые или улучшенные функции. К числу расширений относятся элементы управления, примеры, шаблоны, инструменты или другие компоненты, расширяющие возможности Visual Studio, например Live Share или Visual Studio IntelliCode.
Сведения о создании расширений Visual Studio см. в разделе Visual Studio SDK. Сведения об использовании расширений см. на страницах отдельных расширений в Visual Studio Marketplace. Дополнительные сведения о поиске расширений см. в записи блога Где мои избранные расширения в Visual Studio 2022?.
Сведения о создании расширений Visual Studio см. в разделе Visual Studio SDK. Сведения об использовании расширений см. на страницах отдельных расширений в Visual Studio Marketplace.
Диалоговое окно "Расширения и обновления"
Используйте диалоговое окно Расширения и обновления для установки и управления расширениями Visual Studio. Чтобы открыть диалоговое окно Расширения и обновления, выберите Средства > Расширения и обновления или введите Расширения в поле поиска Быстрый запуск.
Диалоговое окно "Управление расширениями"
Используйте диалоговое окно Управление расширениями для установки расширений Visual Studio и управления ими. Чтобы открыть диалоговое окно Управление расширениями, выберите Расширения > Управление расширениями. Или введите строку Расширения в поле поиска, а затем выберите Управление расширениями.
На левой панели расширения разделены на установленные, доступные в Visual Studio Marketplace (онлайн) и имеющие доступные обновления. Диспетчер перемещаемых расширений хранит список всех расширений 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 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\\Extensions\ . Некоторые расширения устанавливаются на уровне администратора в папку \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 больше не будет отображаться уведомление при аварийном завершении работы этого расширения. Этот выбор не влияет на уведомления Visual Studio о зависаниях, связанных с этим расширением, а также об аварийных завершениях и зависаниях, связанных с другими расширениями.
- Если же уведомление относилось к зависанию, в интегрированной среде разработки (IDE) больше не будут появляться уведомления о том, что это расширение связано с зависаниями. В Visual Studio по-прежнему будут отображаться уведомления об аварийном завершении работы этого расширения, а также об аварийном завершении работы и зависаниях других расширений.
Выберите Дополнительные сведения, чтобы перейти к этой странице.
Уведомление о зависании или аварийном завершении пользовательского интерфейса означает только то, что один из модулей конкретного расширения находился в стеке в тот момент, когда произошло аварийное завершение. Это не обязательно означает, что расширение стало причиной сбоя. Возможно, расширение вызвало внутренний код Visual Studio, который привел к аварийному завершению или зависанию пользовательского интерфейса. Но эти уведомления могут быть полезны, если расширение, приводящее к аварийному завершению или зависанию пользовательского интерфейса, не очень важно для вас. Отключив такое расширение, вы сможете избежать аналогичных проблем в будущем без ущерба для производительности.
Примеры
При установке примера из сети решение сохраняется в двух местоположениях:
Рабочий экземпляр сохраняется в расположении, указанном при создании проекта.
Отдельный контрольный экземпляр сохраняется на компьютере.
С помощью диалогового окна Сервис > Расширения и обновления можно выполнить следующие задачи, связанные с примерами.
С помощью диалогового окна Расширения > Управление расширениями можно выполнить следующие задачи, связанные с примерами.
Отобразить список контрольных экземпляров установленных образцов.
Отключить или удалить контрольный экземпляр образца.
Установить пакеты примеров — коллекции примеров, связанных с определенной технологией или функцией.
Установить отдельные примеры из сети.
Просмотреть уведомления об обновлениях, когда будут опубликованы изменения в исходном коде для установленных примеров.
Обновить контрольный экземпляр установленного примера при получении уведомления об обновлении.
Extensions are code packages that run inside Visual Studio and provide new or improved features. Extensions may be controls, samples, templates, tools, or other components that add functionality to Visual Studio, for example, Live Share or Visual Studio IntelliCode.
For information about creating Visual Studio extensions, see Visual Studio SDK. For information about using extensions, see the individual extension page on Visual Studio Marketplace. And for information about finding extensions, see the Where Are My Favorite Extensions in Visual Studio 2022? blog post.
For information about creating Visual Studio extensions, see Visual Studio SDK. For information about using extensions, see the individual extension page on Visual Studio Marketplace.
Extensions and Updates dialog box
Use the Extensions and Updates dialog box to install and manage Visual Studio extensions. To open the Extensions and Updates dialog, choose Tools > Extensions and Updates, or type Extensions in the Quick Launch search box.
Manage Extensions dialog box
Use the Manage Extensions dialog box to install and manage Visual Studio extensions. To open the Manage Extensions dialog, choose Extensions > Manage Extensions. Or, type Extensions in the search box and choose Manage Extensions.
The pane on the left categorizes extensions by those that are installed, those available on Visual Studio Marketplace (Online), and those that have updates available. Roaming Extension Manager keeps a list of all the Visual Studio extensions you've installed on any machine or instance of Visual Studio. It's designed to let you find your favorite extensions more easily.
Find and install extensions
You can install extensions from Visual Studio Marketplace or the Extensions and Updates dialog box in Visual Studio.
To install extensions from within Visual Studio:
From Tools > Extensions and Updates, find the extension you want to install. If you know the name or part of the name of the extension, you can search in the Search window.
Select Download.
The extension is scheduled for install. Your extension will be installed after all instances of Visual Studio have been closed.
If you try to install an extension that has dependencies, the installer verifies whether they're already installed. If they aren't installed, the Extensions and Updates dialog box lists the dependencies that must be installed before you can install the extension.
Install without using the Extensions and Updates dialog box
Extensions that have been packaged in .vsix files may be available in locations other than Visual Studio Marketplace. The Tools > Extensions and Updates dialog box can't detect these files, but you can install a .vsix file by double-clicking the file or selecting the file and pressing Enter. After that, just follow the instructions. When the extension is installed, you can use the Extensions and Updates dialog box to enable it, disable it, or uninstall it.
- Visual Studio Marketplace contains both VSIX and MSI extensions. The Extensions and Updates dialog box can't enable or disable MSI-based extensions.
- If an MSI-based extension includes an extension.vsixmanifest file, the extension appears in the Extensions and Updates dialog box.
You can install extensions from Visual Studio Marketplace or the Manage Extensions dialog box in Visual Studio.
To install extensions from within Visual Studio:
From Extensions > Manage Extensions, find the extension you want to install. (If you know the name or part of the name of the extension, you can search in the Search window.)
Select Download.
The extension is scheduled for install. Your extension will be installed after all instances of Visual Studio have been closed.
If you try to install an extension that has dependencies, the installer verifies whether they're already installed. If they aren't installed, the Manage Extensions dialog box lists the dependencies that must be installed before you can install the extension.
Install without using the Manage Extensions dialog box
Extensions that have been packaged in .vsix files may be available in locations other than Visual Studio Marketplace. The Extensions > Manage Extensions dialog box can't detect these files, but you can install a .vsix file by double-clicking the file or selecting the file and pressing Enter. After that, just follow the instructions. When the extension is installed, you can use the Manage Extensions dialog box to enable it, disable it, or uninstall it.
- Visual Studio Marketplace contains both VSIX and MSI extensions. The Manage Extensions dialog box can't enable or disable MSI-based extensions.
- If an MSI-based extension includes an extension.vsixmanifest file, the extension appears in the Manage Extensions dialog box.
Uninstall or disable an extension
If you want to stop using an extension, you can either disable it or uninstall it. Disabling an extension keeps it installed but unloaded. Find the extension and click Uninstall or Disable. Restart Visual Studio to unload a disabled extension.
You can disable VSIX extensions but not extensions that were installed using an MSI. MSI-installed extensions can only be uninstalled.
Per-user and administrative extensions
Most extensions are per-user and are installed in the %LocalAppData%\Microsoft\VisualStudio\\Extensions\ folder. A few extensions are administrative extensions and are installed in the \Common7\IDE\Extensions\ folder.
To protect your system against extensions that may contain errors or malicious code, you can restrict per-user extensions to load only when Visual Studio is run with normal user permissions. This means that per-user extensions are disabled when Visual Studio is run with elevated permissions.
To restrict when per-user extensions load:
Open the extensions options page (Tools > Options > Environment > Extensions).
Clear the Load per user extensions when running as administrator check box.
Restart Visual Studio.
Automatic extension updates
Extensions are updated automatically when a new version is available on Visual Studio Marketplace. The new version of the extension is detected and installed in the background. The next time you open Visual Studio, the new version of the extension will be running.
If you wish to disable automatic updates, you can disable the feature for all extensions or only for specific extensions.
To disable automatic updates for all extensions, choose the Change your Extensions and Updates settings link in the Tools > Extensions and Updates dialog box. In the Options dialog, uncheck Automatically update extensions.
To disable automatic updates for a specific extension, uncheck the Automatically update this extension option in the extension's details pane on the right side of the Extensions and Updates dialog.
To disable automatic updates for all extensions, choose the Change your settings for Extensions link in the Extensions > Manage Extensions dialog box. In the Options dialog, uncheck Automatically update extensions.
To disable automatic updates for a specific extension, uncheck the Automatically update this extension option in the extension's details pane on the right side of the Manage Extensions dialog.
Crash and unresponsiveness notifications
Visual Studio notifies you if it suspects that an extension was involved in a crash during a previous session. When Visual Studio crashes, it stores the exception stack. The next time Visual Studio launches, it examines the stack, starting with the leaf and working towards the base. If Visual Studio determines that a frame belongs to a module that is part of an installed and enabled extension, it shows a notification.
Visual Studio also notifies you if it suspects an extension is causing the UI to be unresponsive.
When these notifications are shown, you can ignore the notification or take one of the following actions:
- Choose Disable this extension. Visual Studio disables the extension and lets you know whether you need to restart your system for the disabling to take effect. You can re-enable the extension in the Tools >Extensions and Updates dialog box if you want.
- Choose Disable this extension. Visual Studio disables the extension and lets you know whether you need to restart your system for the disabling to take effect. You can re-enable the extension in the Extensions >Manage Extensions dialog box if you want.
Choose Never show this message again.
- If the notification concerns a crash in a previous session, Visual Studio no longer shows a notification when a crash associated with this extension occurs. Visual Studio will still show notifications when unresponsiveness can be associated with this extension, or for crashes or unresponsiveness that can be associated with other extensions.
- If the notification concerns unresponsiveness, the integrated development environment (IDE) no longer shows a notification when this extension is associated with unresponsiveness. Visual Studio will still show crash-related notifications for this extension and crash- and unresponsiveness-related notifications for other extensions.
Choose Learn more to navigate to this page.
Choose the X button at the end of the notification to dismiss the notification. A new notification will appear for future instances of the extension being associated with a crash or UI unresponsiveness.
A UI unresponsiveness or crash notification means only that one of the extension’s modules was on the stack when the UI was unresponsive or when the crash occurred. It does not necessarily mean that the extension itself was the culprit. It's possible that the extension called code that's part of Visual Studio, which in turn resulted in unresponsive UI or a crash. However, the notification may still be useful if the extension which led to the UI unresponsiveness or crash is not important to you. In this case, disabling the extension avoids the UI unresponsiveness or the crash in the future, without impacting your productivity.
Samples
When you install an online sample, the solution is stored in two locations:
A working copy is stored in the location that you specified when you created the project.
A separate master copy is stored on your computer.
You can use the Tools > Extensions and Updates dialog box to perform these samples-related tasks:
You can use the Extensions > Manage Extensions dialog box to perform these samples-related tasks:
List the master copies of samples that you have installed.
Disable or uninstall the master copy of a sample.
Install Sample Packs, which are collections of samples that relate to a technology or feature.
Install individual online samples.
View update notifications when source code changes are published for installed samples.
Update the master copy of an installed sample when there is an update notification.
Подогреваемые жаждой сделать полезное коллегам, независимые разработчики решили написать небольшие расширения для Visual Studio. А тут еще и Extension Manager из Visual Studio 2010 так упростил процесс распространения расширений. Пример таких расширений можно найти здесь и здесь. Невозможно судить об алгоритмах, используемых в этих расширениях. Хотя не буду скрывать, что после того как первое расширение бессовестно удалило из проекта приличную часть реально нужных для компиляции сборок, мы все таки посмотрели его рефлектором… Разбираться со вторым уже не стали. В общем-то, проблема одинакова, а ключевое словосочетание можно найти в пред-предыдущем предложении: нужных для компиляции.
Рассмотрим простой пример. Пусть есть 3 проекта – 3 сборки. Сборка Assembly_A определяет класс Class_A, сборка Assembly_B определяет класс Class_B, унаследованный от класса Class_A из сборки Assembly_A. У каждого класса есть различные методы, скажем метод класса Class_A это Method_A, а метод класса Class_B – Method_B. В третьей сборке (Assembly_C) мы хотим использовать класс Class_B. Для этого в проекте добавляем ссылки на сборки Assembly_A и Assembly_B, после чего в каком-то из классов создаем экземпляр класса Class_B, вызываем метод Method_B и компилируем проект. Сборка Assembly_C готова, давайте откроем её с помощью ildasm.exe и взглянем на манифест:
// Metadata version: v4.0.30319
.assembly extern mscorlib
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
>
.assembly extern Assembly_B
.ver 1:0:0:0
>
.assembly Assembly_C
// метаданные для текущей сборки
>
.module Assembly_C.exe
// MVID:
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000003 // ILONLY 32BITREQUIRED
// Image base : 0x014C0000
* This source code was highlighted with Source Code Highlighter .
Это что же получается?! Assembly_A мы добавили к проекту, а она и не нужна? Открываем Visual Studio и удаляем из проекта Assembly_C ссылку на сборку Assembly_A. Компилируем и… получаем ошибку “The type 'Assembly_A.Class_A' is defined in an assembly that is not referenced. You must add a reference to assembly 'Assembly_A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.”
Важно понимать причину такого поведения. В проекте нигде нет явного обращения к типам сборки Assembly_A, поэтому ссылка на эту сборку не включается в манифест сборки проекта (Assembly_C). В то же время один из типов сборки Assembly_B используется в проекте. Фактически, получается, что для времени выполнения (runtime) достаточно иметь ссылку на сборку Assembly_B. А сборки, от которых она зависит, CLR получит уже из её манифеста и так же загрузит. Но для компилятора (compile time) важно иметь в проекте Assembly_C ссылки и на сборку Assembly_B и на сборку Assembly_A, ведь он должен знать все об используемом классе Class_B, в том числе и её предков. Хорошая статья о зависимостях сборок была опубликована в MSDN Magazine, прочитать её можно здесь.
Не важно, где в вашем проекте используется класс: как поле какого-то класса, как параметр метода, как атрибут и т.п. Важно понимать то, что у компилятора должна быть возможность получить полную информацию обо всех типах, используемых в проекте. Мы должны четко указывать сборку, которую хотим использовать, ведь класс может существовать в разных версиях одной сборки (даже если компилятор сможет найти сборку (скажем в GAC), то, как ему выбрать нужную, если их несколько?). Вот, что должно быть основной идеей при разработке программы способной находить неиспользуемые в проекте сборки, т.е. такие сборки которые не требуются для компиляции.
Исследование зависимостей классов проекта служит основой расширения Reference Assistant, которое мы разработали в Lardite Group. Это бесплатное расширение доступное в Visual Studio Gallery, кроме того, вы можете загрузить исходный код Reference Assistant со страницы проекта на CodePlex.
Именно с анализа иерархии классов начался Reference Assistant. Постепенно к нему добавился анализ иерархии интерфейсов, анализ атрибутов и типов их параметров, анализ импортированных типов (например, из COM библиотеки), типов перемещенных в другую сборку. Да, есть и такие! Простой пример — ObservableCollection перекочевал из сборки WindowsBase.dll (fx3.5) в System.dll (fx4.0).
Мне нравится пример с анализом перегруженных методов. Предположим, в сборке Assembly_B определен класс Class_B, в котором метод SetCode перегружен. Пусть две его перегрузки принимают по одному параметру: один типа System.Int32, другой Assembly_A.Class_A. В сборке проекта (Assembly_C) вызывается один из перегруженных методов SetCode класса Class_B принимающий один параметр. В этом случае компилятор должен знать всё о типах параметров обоих методов, чтобы выбрать наиболее подходящий. А это значит, что сборки, в которых есть определения типов участвующих в иерархии, должны быть в ссылках проекта. Т.е. в нашем случае в ссылках проекта Assembly_C должна быть ссылка на сборки Assembly_A и Assembly_B. Описанный пример в виде кода:
// Assembly_B.dll
using Assembly_A;
namespace Assembly_B
public class Class_B
public void SetCode( int code)
// some actions…
>
public void SetCode(Class_A code)
// some actions…
>
>
>
// Assembly_C.dll (проект, который использует Assembly_B)
using Assembly_B;
namespace Assembly_C
public class Class_C
public void Run()
// some actions…
var classB = new Class_B();
classB.SetCode(1);
// some actions…
>
>
>
* This source code was highlighted with Source Code Highlighter .
Это самое основное, что хотелось рассказать. Конечно, во время разработки, мы столкнулись со множеством нюансов, описать которые в одной статье было бы перебором. Но о самых интересных мы непременно постараемся написать в других статьях. В заключении, хочется пару слов сказать об использовании Reference Assistant.
Как я уже говорил ранее, скачать Reference Assistant можно либо с CodePlex, либо с Visual Studio Gallery. Между ними есть небольшое различие – расширение, выложенное в Gallery, нельзя использовать в Express редакции Visual Studio (это ограничение Visual Studio Gallery), но расширение с CodePlex можно.
Самый простой способ установки — использовать Extension Manager, утилиту Visual Studio.
Для удаления неиспользуемых сборок в контекстном меню проекта или ссылок проекта (папка References) выбрать пункт “Remove Unused References”.
Перед удалением неиспользуемых сборок будет показано окно для подтверждения списка. Вы можете редактировать это список, если уверены, что сборка нужна по каким-либо причинам (например, динамически подключается к приложению в зависимости от настроек в файле конфигурации).
Можно так же отключить показ окна “Unused References List” с помощью опции “Don’t show this dialog next time”. Снова включить можно в конфигурации расширения: меню Tools -> Options… -> Reference Assistant.
Читайте также: