Для кого эта статья
Странно говорить о таких понятиях, как расширение функционала такого продукта, как Visual Studio в контексте «для чайников», но есть люди, которые и журналы смотрят с последней страницы. Эта статья для тех, кто уже имеет представление как обращаться со студией, но пока мало знает, чем она может помочь, и уже очень хочется добавить свою фичу.
Ожидаемые результаты
Научиться создавать и встраивать VSPackage расширения в VS 2012, на примере расширения для запуска калькулятора прямо из студии.
Что потребуется
Для разработки расширения потребуется сама студия, я воспользуюсь VS 2012, а также необходимо установить VS SDK 2012. Отмечу, что для разработки в VS 2010 есть VSPackage Builder , и этот инструмент помогает создавать расширения в дизайнере. Мы же обойдемся только шаблоном проекта предоставляемого SDK.
Шаг 1. Создаем проект
Файл->Создать->Проект->Шаблоны->Другие типы проектов-Расширение среды->Visual Studio Package и задаем имя проекта VSPackageCalc.
Далее следуем указаниям мастера, обратив внимание на следующие окна![](//habrastorage.org/files/bf4/77c/a99/bf477ca99100457f9740d70573691eb9.JPG)
![](//habrastorage.org/files/0a8/ed4/af5/0a8ed4af5a7049ecbe03a3bda4b1f122.JPG)
![](//habrastorage.org/files/3cf/47a/90f/3cf47a90f31a449bb9356f1c7628cb39.JPG)
![](//habrastorage.org/files/db3/ca2/733/db3ca2733c5e4555ab40e11add59340c.JPG)
![](//habrastorage.org/files/0f1/876/353/0f187635311a4ede9e3e187d31f6a546.JPG)
Шаг 2. Редактируем способ запуска и отображение кнопки в студии
Искомый файл: VSPackageCalc.vsct — файл с расширением .vsct
Определимся где отобразить кнопку и как запускать расширение, Отмечу два варианта отображения:
— добавление пункта меню в меню «Сервис»
— добавление панели кнопок в тулбар
Группа команд для меню «Сервис» задается так (код уже сгенерирован):
<Group guid="guidVSPackageCalcCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
Как будет назваться панель инструментов в меню панелей инструментов (оставим имя по умолчанию VSPackageCalc Toolbar):
<Menu guid="guidVSPackageCalcCmdSet" id="IDM_TLB_RTF" priority="0x0000" type="Toolbar">
<Parent guid="guidVSPackageCalcCmdSet" id="0"/>
<Strings>
<ButtonText>VSPackageCalc Toolbar</ButtonText>
</Strings>
</Menu>
Честно говоря идентификаторов типа IDM_VS_MENU_TOOLS, указывающих в какой раздел меню можно поместить вызов функции расширения, много, и разбираться со всеми не входит в рамки статьи, но кое-что можно почерпнуть в MSDN
Далее определимся с видом кнопки тулбара. Сначала удалим лишнее кнопки из нашего тулбара (по умолчанию создаются инструменты для редактирования), заменив код с описанием группы кнопок тулбара расширения:
<!-- Toolbar groups -->
<Group guid="guidVSPackageCalcCmdSet" id="IDG_RTF_TLB_FONT1" priority="0x0100">
<Parent guid="guidVSPackageCalcCmdSet" id="IDM_TLB_RTF"/>
</Group>
...
на код одного элемента тулбара:
<!-- Toolbar groups -->
<Group guid="guidVSPackageCalcCmdSet" id="MyMenuGroup" priority="0x0100">
<Parent guid="guidVSPackageCalcCmdSet" id="IDM_TLB_RTF"/>
</Group>
Далее можно редактировать текст и отображения самого пункта меню:
<Button guid="guidVSPackageCalcCmdSet" id="cmdidCalcStart" priority="0x0100" type="Button">
<Parent guid="guidVSPackageCalcCmdSet" id="MyMenuGroup" />
<Icon guid="guidImages" id="bmpPic1" />
<Strings>
<ButtonText>Калькулятор</ButtonText>
</Strings>
</Button>
Можно удалить элемент Icon (иконку), и тогда будет отображаться только текст. Иначе при отображении в тулбаре будет иконка, а чтобы показать и текст к ней, придется настраивать отдельно через инструмент настройки отображения кнопок тулбара в самой студии.
Шаг 3. Описание функционала расширения
Для задания функционала нашего расширения, его нужно описать в файле VSPackageCalcPackage.cs, отредактировав метод обработки нажатия на кнопку меню, который также был уже сгенерирован при создании проекта. Удалим все, что внутри метода и заменим на запуск приложения — стандартного калькулятора:
private void MenuItemCallback(object sender, EventArgs e)
{
// Запуск процесса:
Process.Start("Calc.exe");
}
Шаг 4. Встраивание расширения
Ну вот почти и готово, осталось только собрать проект и в папке построения запустить VSPackageCalc.vsix.
Процесс установки![](//habrastorage.org/files/e40/22b/ba4/e4022bba4b9d4383a317ae3d38021a0b.JPG)
После установки необходимо перезапустить студию.
Шаг 5. Использование встроенной фичи
Запуск из меню Сервис![](//habrastorage.org/files/32b/d1c/a20/32bd1ca20e494b3c97be05673bcb2928.jpg)
![](http://habrastorage.org/files/32b/d1c/a20/32bd1ca20e494b3c97be05673bcb2928.jpg)
Запуск из тулбара
Сначала нужно добавить панель инструментов VSPackageCalc Toolbar средствами VS — правая мышь по тулбару и отметить галочкой. Тула появилась на панели:
![](//habrastorage.org/files/8db/ec7/df7/8dbec7df78f54e5bbc065eb04936a169.JPG)
Заключение
Пусть фича не очень полезная и не сложная получилась, но, надеюсь, полученные знания подтолкнут к более глубокому изучению вопроса разработки расширений для Visual Studio.
tenbits
А есть способы отладки расширения без постоянного перезапуска студии?
blindboy Автор
Да, об этом я не стал упоминать, потому что сам пока не разобрался. Но если интересно то можете посмотреть статью в блоге компании PVS-Studio с помощью которой я как раз хотел разобраться.