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


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

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

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

  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. Теперь попробуйте его. При запуске отладки проекта и нажатии кнопки "Сервис>вызова FirstCommand" появится экземпляр Блокнота.

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

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

Если вы разрабатываете несколько расширений или просто изучаете результаты с различными версиями кода расширения, экспериментальная среда может перестать работать так, как это должно. В этом случае необходимо запустить скрипт сброса. Он называется сбросом экспериментального экземпляра Visual Studio и поставляется в составе пакета 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. В частности, если вы создали конфигурацию выпуска, она будет находиться в:

<каталог> кода\FirstMenuCommand\FirstMenuCommand\bin\Release\FirstMenuCommand.vsix

Чтобы установить расширение, ваш друг должен закрыть все открытые экземпляры Visual Studio, а затем дважды щелкните VSIX-файл, который открывает установщик VSIX. Файлы копируются в каталог %LocalAppData%\Microsoft\VisualStudio<version>\Extensions .

Когда ваш друг снова открывает Visual Studio, они найдут расширение FirstMenuCommand в расширениях и обновлениях инструментов>. Они также могут перейти к расширениям и обновлениям , чтобы удалить или отключить расширение.

Следующие шаги

В этом пошаговом руководстве показана лишь небольшая часть того, что можно сделать с расширением Visual Studio. Ниже приведен краткий список других (достаточно простых) действий, которые можно сделать с помощью расширений Visual Studio:

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

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

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

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

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

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

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

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

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