Поделиться через


Создание расширения с помощью команды меню

В этом пошаговом руководстве показано, как создать расширение с помощью команды меню, которая запускает Блокнот.

Создание команды меню

  1. Создайте проект VSIX с именем FirstMenuCommand. Шаблон проекта VSIX можно найти в диалоговом окне нового проекта, выполнив поиск vsix.

  2. Когда проект откроется, добавьте пользовательский шаблон элемента команды с именем FirstCommand. В обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите Добавить>Новый элемент. В диалоговом окне Добавление нового элемента перейдите к элементам C#>расширяемости и выберите Команда. В поле имя в нижней части окна измените имя файла команды на FirstCommand.cs.

  3. Создайте проект и запустите отладку.

    Появляется экспериментальный экземпляр Visual Studio. Дополнительные сведения об экспериментальном экземпляре см. в разделе Экспериментальный экземпляр.

  4. В экспериментальном экземпляре откройте окно Расширения>Управление расширениями. Здесь вы должны увидеть расширение FirstMenuCommand. (Если вы откроете Управление расширениями в вашем рабочем экземпляре Visual Studio, вы не увидите FirstMenuCommand).

Теперь перейдите в меню инструментов в экспериментальной версии. Вы увидите команду Invoke FirstCommand. На этом этапе команда открывает окно сообщения, которое говорит FirstCommand Inside FirstMenuCommand.FirstCommand.MenuItemCallback(). Мы посмотрим, как запустить Блокнот с помощью этой команды в следующем разделе.

Изменение обработчика команд меню

Теперь обновим обработчик команд, чтобы запустить Блокнот.

  1. Остановите отладку и вернитесь к рабочему экземпляру Visual Studio. Откройте файл FirstCommand.cs и добавьте следующую инструкцию using:

    using System.Diagnostics;
    
  2. Найдите частный конструктор 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);
    }
    
  3. Удалите метод Execute и добавьте метод StartNotepad, который просто запустит Блокнот:

    private void StartNotepad(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
    
        Process proc = new Process();
        proc.StartInfo.FileName = "notepad.exe";
        proc.Start();
    }
    
  4. Теперь попробуйте. При запуске отладки проекта и нажатии кнопки Tools>Invoke FirstCommandоткроется Блокнот.

    Экземпляр класса Process можно использовать для запуска любого исполняемого файла, а не только Блокнота. Попробуйте использовать calc.exe, например.

Очистка экспериментальной среды

Если вы разрабатываете несколько расширений или просто изучаете результаты с различными версиями кода расширения, экспериментальная среда может перестать работать так, как это должно. В этом случае необходимо запустить скрипт сброса. Это называется Reset the Visual Studio Experimental Instanceи поставляется в составе пакета SDK для Visual Studio. Этот скрипт удаляет все ссылки на расширения из экспериментальной среды, чтобы начать с нуля.

Этот скрипт можно получить одним из двух способов:

  1. На рабочем столе найдите Сбросить экспериментальный экземпляр Visual Studio.

  2. В командной строке выполните следующую команду:

    <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:

  1. Вы можете выполнить много других действий с помощью простой команды меню:

    1. Добавьте собственный значок: Добавить значки в команды меню

    2. Измените текст команды меню: Изменить текст команды меню

    3. Добавление сочетания клавиш меню в команду: Привязка сочетаний клавиш к элементам меню

  2. Добавление различных типов команд, меню и панелей инструментов: расширение меню и команд

  3. Добавьте окна инструментов и расширьте встроенные окна инструментов Visual Studio: Расширение и настройка окон инструментов

  4. Добавьте IntelliSense, предложения кода и другие функции в существующие редакторы кода: расширьте редактор и языковые службы

  5. Добавьте страницы параметров и свойств, а также настройки пользователя в ваше расширение: Расширьте свойства и окно свойств и Расширьте настройки пользователя и параметры

    Для других типов расширений требуется немного больше работы, например создание нового типа проекта (расширение проектов) или создание нового типа редактора (создание пользовательских редакторов и конструкторов).