Создание расширения с помощью команды меню
В этом пошаговом руководстве показано, как создать расширение с помощью команды меню, которая запускает Блокнот.
Создание команды меню
Создайте проект VSIX с именем FirstMenuCommand. Шаблон проекта VSIX можно найти в диалоговом окне нового проекта, выполнив поиск vsix.
Когда проект откроется, добавьте пользовательский шаблон элемента команды с именем FirstCommand. В обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите Добавить>Новый элемент. В диалоговом окне Добавление нового элемента перейдите к элементам C#>расширяемости и выберите Команда. В поле имя в нижней части окна измените имя файла команды на FirstCommand.cs.
Создайте проект и запустите отладку.
Появляется экспериментальный экземпляр Visual Studio. Дополнительные сведения об экспериментальном экземпляре см. в разделе Экспериментальный экземпляр.
В экспериментальном экземпляре откройте окно Расширения>Управление расширениями. Здесь вы должны увидеть расширение FirstMenuCommand. (Если вы откроете Управление расширениями в вашем рабочем экземпляре Visual Studio, вы не увидите FirstMenuCommand).
Теперь перейдите в меню инструментов в экспериментальной версии. Вы увидите команду Invoke FirstCommand. На этом этапе команда открывает окно сообщения, которое говорит FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Мы посмотрим, как запустить Блокнот с помощью этой команды в следующем разделе.
Изменение обработчика команд меню
Теперь обновим обработчик команд, чтобы запустить Блокнот.
Остановите отладку и вернитесь к рабочему экземпляру Visual Studio. Откройте файл FirstCommand.cs и добавьте следующую инструкцию using:
using System.Diagnostics;
Найдите частный конструктор FirstCommand. Это место, где команда подключается к службе команд и указан обработчик команд. Измените имя обработчика команд на StartNotepad следующим образом:
private FirstCommand(AsyncPackage package, OleMenuCommandService commandService) { this.package = package ?? throw new ArgumentNullException(nameof(package)); commandService = commandService ?? throw new ArgumentNullException(nameof(commandService)); CommandID menuCommandID = new CommandID(CommandSet, CommandId); // Change to StartNotepad handler. MenuCommand menuItem = new MenuCommand(this.StartNotepad, menuCommandID); commandService.AddCommand(menuItem); }
Удалите метод
Execute
и добавьте методStartNotepad
, который просто запустит Блокнот:private void StartNotepad(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); Process proc = new Process(); proc.StartInfo.FileName = "notepad.exe"; proc.Start(); }
Теперь попробуйте. При запуске отладки проекта и нажатии кнопки Tools>Invoke FirstCommandоткроется Блокнот.
Экземпляр класса Process можно использовать для запуска любого исполняемого файла, а не только Блокнота. Попробуйте использовать
calc.exe
, например.
Очистка экспериментальной среды
Если вы разрабатываете несколько расширений или просто изучаете результаты с различными версиями кода расширения, экспериментальная среда может перестать работать так, как это должно. В этом случае необходимо запустить скрипт сброса. Это называется Reset the Visual Studio Experimental Instanceи поставляется в составе пакета SDK для Visual Studio. Этот скрипт удаляет все ссылки на расширения из экспериментальной среды, чтобы начать с нуля.
Этот скрипт можно получить одним из двух способов:
На рабочем столе найдите Сбросить экспериментальный экземпляр Visual Studio.
В командной строке выполните следующую команду:
<VSSDK installation>\VisualStudioIntegration\Tools\Bin\CreateExpInstance.exe /Reset /VSInstance=<version> /RootSuffix=Exp && PAUSE
Развертывание расширения
Теперь, когда у вас есть расширение средства, работающее так, как вы хотите, пришло время подумать о его совместном использовании с друзьями и коллегами. Это просто, если у них установлен Visual Studio 2015. Всё, что вам нужно сделать, — это отправить им созданный вами файл .vsix . (Не забудьте создать его в режиме релиз.)
Файл .vsix для этого расширения можно найти в каталоге bin FirstMenuCommand. В частности, если вы создали конфигурацию Release, она будет находиться в:
каталог кода <>\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix
Чтобы установить расширение, ваш друг должен закрыть все открытые экземпляры Visual Studio, а затем дважды щелкнуть файл .vsix, который открывает Установщик VSIX. Файлы копируются в каталог %LocalAppData%\Microsoft\VisualStudio<версии>\Extensions.
Когда ваш друг снова открывает Visual Studio, он найдет расширение FirstMenuCommand в Tools>Extensions and Updates. Они также могут перейти к расширениям и обновлениям для удаления или отключения расширения.
Дальнейшие действия
В этом пошаговом руководстве показана лишь небольшая часть того, что можно сделать с расширением Visual Studio. Ниже приведен краткий список других (достаточно простых) действий, которые можно сделать с помощью расширений Visual Studio:
Вы можете выполнить много других действий с помощью простой команды меню:
Добавьте собственный значок: Добавить значки в команды меню
Измените текст команды меню: Изменить текст команды меню
Добавление сочетания клавиш меню в команду: Привязка сочетаний клавиш к элементам меню
Добавление различных типов команд, меню и панелей инструментов: расширение меню и команд
Добавьте окна инструментов и расширьте встроенные окна инструментов Visual Studio: Расширение и настройка окон инструментов
Добавьте IntelliSense, предложения кода и другие функции в существующие редакторы кода: расширьте редактор и языковые службы
Добавьте страницы параметров и свойств, а также настройки пользователя в ваше расширение: Расширьте свойства и окно свойств и Расширьте настройки пользователя и параметры
Для других типов расширений требуется немного больше работы, например создание нового типа проекта (расширение проектов) или создание нового типа редактора (создание пользовательских редакторов и конструкторов).