Создание расширений для 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 в Windows. дополнительные Visual Studio для Mac см. в разделе расширение Visual Studio для Mac. Visual Studio Code см. в разделе API расширения Visual Studio Code.
какое программное обеспечение требуется для разработки расширений Visual Studio?
для разработки расширений Visual Studio необходимо установить пакет SDK для Visual Studio в дополнение к Visual Studio. пакет SDK Visual Studio можно установить в рамках обычной установки или позже. дополнительные сведения об установке пакета sdk для Visual Studio см. в разделе установка пакета sdk для Visual Studio.
какие виды действий можно выполнить с помощью расширений Visual Studio?
предельное значение перевозки, когда приходится выключать различные расширения Visual Studio. Конечно, большинство расширений имеют что-то, что нужно делать с написанием кода, но это не должно быть так. Ниже приведены некоторые примеры типов расширений, которые можно создать.
поддержка языков, которые не входят в Visual Studio, с использованием расцветки синтаксиса, технологии IntelliSense и поддержки компилятора и отладки
Средства повышения производительности, расширяющие возможности интегрированной среды разработки с дополнительными шаблонами, рефакторинг кода, новые диалоговые окна и окна инструментов
Зависящие от домена конструкторы для таких сценариев, как проектирование данных или поддержка в облаке
примеры расширений см. в Visual Studio Marketplace. многие расширения открыты с открытым исходным кодом, и в Marketplace имеются ссылки на их GitHub репозиторий.
какие возможности Visual Studio можно расширить?
теоретически, вы можете расширить практически любую часть Visual Studio: меню, панелей инструментов, команд, окон, решений, проектов, редакторов и т. д.
На практике мы обнаружили, что большинство пользователей хотят расширить возможности команд, меню и панелей инструментов, окон, IntelliSense и проектов. Ниже приведены ссылки на соответствующие разделы.
расширение меню и команд: добавление собственных элементов в Visual Studio меню и панелей инструментов. их можно использовать для запуска новых Visual Studio функциональных возможностей или собственных внешних вспомогательных приложений. Можно также указать настраиваемые сочетания клавиш для пунктов меню.
расширение и настройка средства Windows: расширение существующих окон инструментов или создание собственных окон инструментов. Например, можно добавить в Свойства новые свойства или создать новое окно инструментов для добавления дополнительных компонентов.
расширения редактора и языковой службы: добавьте собственные настройки в IntelliSense, предоставляемую для Visual Studio языков, или создайте поддержку для новых языков программирования. Можно создавать новые завершения операторов, предложения и новые подсказки краткие сведения. С помощью лампочкй можно добавлять предложения рефакторинга и исправления кода для поддержки новых языков программирования.
Какие шаблоны проектов предоставляются VSSDK?
Два основных типа расширений — это пакеты VSPackage и расширения MEF. Как правило, расширения VSPackage используются для расширений, которые используют или расширяют команды, окна инструментов и проекты. расширения MEF используются для расширения или настройки редактора Visual Studio.
Для C++ мастер VSPackage предоставляет код для добавления команд меню, окон инструментов и пользовательских редакторов.
шаблон изолированной оболочки используется для упаковки расширения в версии оболочки Visual Studio, которую можно распространять и предоставлять самостоятельно. В следующих разделах показано, как приступить к работе с каждым типом расширения.
Разделы справки получить расширение, которое будет выглядеть Visual Studio?
получите советы по проектированию пользовательского интерфейса для расширения в Visual Studio рекомендации по работе с пользователем.
Где можно найти примеры кода VSSDK?
Каждая из ссылок, перечисленных в предыдущем разделе, содержит пошаговые пошаговые руководства, демонстрирующие способы реализации конкретных функций. примеры VSSDK с открытым исходным кодом также можно найти на GitHub Visual Studio примерах.
Как можно распространить расширение?
вы также можете опубликовать расширение в Visual Studio Marketplace, что делает его видимым для большого количества Visual Studioных клиентов. пример упаковки расширения в Marketplace см. в разделе пошаговое руководство. публикация расширения Visual Studio. Дополнительные сведения о том, что необходимо сделать для публикации в Marketplace, см. в разделе Products and Extensions for Visual Studio.
In this topic, we'll teach you the fundamental concepts for building extensions. Make sure you have Node.js and Git installed, then install Yeoman and VS Code Extension Generator with:
The generator scaffolds a TypeScript or JavaScript project ready for development. Run the generator and fill out a few fields for a TypeScript project:
Then, inside the editor, press F5 . This will compile and run the extension in a new Extension Development Host window.
Run the Hello World command from the Command Palette ( ⇧⌘P (Windows, Linux Ctrl+Shift+P ) ) in the new window:
You should see the Hello World from HelloWorld! notification showing up. Success!
Developing the extension
Let's make a change to the message:
- Change the message from "Hello World from HelloWorld!" to "Hello VS Code" in extension.ts .
- Run Developer: Reload Window in the new window.
- Run the command Hello World again.
You should see the updated message showing up.
Here are some ideas for things for you to try:
- Give the Hello World command a new name in the Command Palette. another command that displays current time in an information message. Contribution points are static declarations you make in the package.json Extension Manifest to extend VS Code, such as adding commands, menus, or keybindings to your extension.
- Replace the vscode.window.showInformationMessage with another VS Code API call to show a warning message.
Debugging the extension
VS Code's built-in debugging functionality makes it easy to debug extensions. Set a breakpoint by clicking the gutter next to a line, and VS Code will hit the breakpoint. You can hover over variables in the editor or use the Run view in the left to check a variable's value. The Debug Console allows you to evaluate expressions.
You can learn more about debugging Node.js apps in VS Code in the Node.js Debugging Topic.
Next steps
In the next topic, Extension Anatomy, we'll take a closer look at the source code of the Hello World sample and explain key concepts.
Using JavaScript
In this guide, we mainly describe how to develop VS Code extension with TypeScript because we believe TypeScript offers the best experience for developing VS Code extensions. However, if you prefer JavaScript, you can still follow along using helloworld-minimal-sample.
UX Guidelines
This is also a good time to review our UX Guidelines so you can start designing your extension user interface to follow the VS Code best practices.
в этом пошаговом руководстве показано, как создать расширение с помощью команды меню, запускающей Блокнот.
Предварительные требования
начиная с Visual Studio 2015, пакет SDK для Visual Studio не устанавливается из центра загрузки. он входит в состав Visual Studio установки в качестве дополнительного компонента. Пакет SDK для VS можно установить и позже. дополнительные сведения см. в статье установка пакета SDK для Visual Studio.
Создание команды меню
- Создайте проект VSIX с именем фирстменукомманд. шаблон проекта VSIX можно найти в диалоговом окне New Project , выполнив поиск по слову "VSIX".
Выполните сборку решения и запустите отладку.
откроется экспериментальный экземпляр Visual Studio. Дополнительные сведения об экспериментальном экземпляре см. в статье экспериментальный экземпляр.
- В экспериментальном экземпляре откройте окно инструменты >расширения и обновления . Здесь вы увидите расширение фирстменукомманд . (если вы открыли расширения и обновления в рабочем экземпляре Visual Studio, вы не увидите фирстменукомманд).
- В экспериментальном экземпляре откройте окно расширения >Управление расширениями . Здесь вы увидите расширение фирстменукомманд . (если вы открыли управление расширениями в рабочем экземпляре Visual Studio, вы не увидите фирстменукомманд).
Изменение обработчика команд меню
теперь попробуем обновить обработчик команд для запуска Блокнот.
Завершите отладку и вернитесь к рабочему экземпляру Visual Studio. Откройте файл фирсткомманд. CS и добавьте следующую инструкцию using:
Найдите закрытый конструктор Фирсткомманд. Именно в этом случае команда подключена к службе команд, и указан обработчик команд. Измените имя обработчика команды на Стартнотепад следующим образом:
удалите Execute метод и добавьте StartNotepad метод, который будет запускаться только Блокнот:
Теперь попробуйте. после начала отладки проекта и нажатия кнопки инструменты > вызвать фирсткомманд вы увидите экземпляр Блокнот.
экземпляр класса можно использовать Process для запуска любого исполняемого файла, а не только Блокнот. Попробуйте использовать его с calc.exe , например.
Очистка экспериментальной среды
Если вы разрабатываете несколько расширений или просто изучаете результаты с разными версиями кода расширения, экспериментальная среда может перемешать работать. В этом случае следует запустить скрипт сброса. он называется сбросом Visual Studio экспериментальным экземпляром и поставляется в составе пакета SDK для Visual Studio. Этот сценарий удаляет все ссылки на расширения из экспериментальной среды, что позволяет начать с нуля.
Этот скрипт можно получить одним из двух способов:
на рабочем столе найдите параметр сбросить Visual Studio экспериментальный экземпляр.
Выполните следующую команду в командной строке:
Развертывание расширения
VSIX файл для этого расширения можно найти в каталоге bin фирстменукомманд . В частности, если вы создали конфигурацию выпуска, она будет находиться в следующих статьях:
чтобы установить расширение, вашему другу нужно закрыть все открытые экземпляры Visual Studio, а затем дважды щелкнуть vsix -файл, который открывает установщик vsix. Файлы копируются в каталог %Локалаппдата%\микрософт\висуалстудио \екстенсионс .
когда ваш друг снова пойдет Visual Studio, он обнаружит расширение фирстменукомманд в средствах > расширения и обновлений. Они также могут обращаться к расширениям и обновлениям , чтобы удалить или отключить расширение.
Дальнейшие действия
в этом пошаговом руководстве показана только небольшая часть того, что можно сделать с помощью расширения Visual Studio. ниже приведен краткий список других (достаточно простых) действий, которые можно выполнять с помощью расширений Visual Studio.
С помощью простой команды меню можно выполнять многие другие задачи:
Добавить в команду Ярлык меню: Привязка сочетаний клавиш к пунктам меню
Добавление различных типов команд, меню и панелей инструментов: Расширение меню и команд
добавление окон инструментов и расширение встроенных окон инструментов Visual Studio: расширение и настройка окон инструментов
Добавление IntelliSense, предложений кода и других функций в существующие редакторы кода: расширение возможностей редактора и языковых служб
Добавьте параметры и страницы свойств и параметры пользователя в расширение: расширение свойств и окно свойств , а также расширение параметров пользователя и параметров .
для других типов расширений требуется немного больше работы, например создание нового типа проекта (расширение проектов), создание нового типа редактора (создание пользовательских редакторов и конструкторов) или реализация расширения в изолированной оболочке: Visual Studio изолированной оболочке
На самом деле обычно это автоматизируется с помощью макросов самой студии ( и вариантов макросов в сети много), но мне приятнее использовать контекстное меню, тем более что создание самого расширения — это дело простое, всю работу сделает VSPackage Builder, нам останется лишь вписать несколько строчек кода в обработчик нажатия элемента меню.
Итак, начнем. Нам потребуется Visual Studio 2010 Pro или старше. Необходимо дополнительно установить Visual Studio 2010 SDK и специальное дополнение VSPackage Builder, максимально облегчающее создание новых расширений.
Создание расширения
В открывшемся проекте разместим на дизайнере расширения (файл HeaderDefineCreater.vspackage) все необходимые нам элементы. Начнем с первого элемента — добавим контекстное меню. В его свойствах напротив поля Location выберем размещение — «Context Menu | Editor»
Затем создадим группу Group, одну кнопку (назовем ее CreateHeaderDefineButton) и два коннекта между всеми элементами. На скрине с левой стороны показаны свойства для кнопки. Там все стандартное, разве что следует обратить внимание что кнопка (то есть строка в контекстном меню) будет видима только в редакторе (Visibility Constraints: TextEditor). Что касается шортката, то эти поля можно оставить пустыми, поскольку их можно настроить отдельно при использовании расширения.
Ну вот, все готово. Осталось только заполнить обработчик нажатия на элемент контекстного меню.
Автоматически сгенерированный обработчик нажатия выглядит следующим образом:
Нам осталось лишь заполнить поля в манифесте (добавить иконку, описание и тд. ) и все скомпилировать.
После компиляции мы получим готовое расширение HeaderDefineCreater.vsix.
Установка расширения и смена шорткатов
Устанавливается расширение простым двойным кликом.
Удалить его можно зайдя в Tools->Extension Manager.
Для того, чтобы установить шорткат для расширения, нужно зайти в Tools -> Options -> Keyboard, найти там по поиску имя кнопки (мы кнопку назвали CreateHeaderDefineButton, но, впрочем, для простоты можно было бы ее назвать и именем расширения). Для найденной кнопки ставим любое свободное сочетание:
Я не стала выкладывать сюда весь проект, поскольку расширение очень простое, все шаги описаны, да и весь код в обработчике клика тоже здесь выложен. Поэтому приложу для примера только само расширение, получившееся в итоге — HeaderDefineCreater.vsix
Читайте также: