Добавить элемент в контекстное меню папки Visual Studio в AddIn

Я хочу добавить пункт меню в контекстное меню => Добавить меню в обозревателе решений Visual Studio 2012. При нажатии на пользовательский элемент я могу добавить проект с моим шаблоном. Я разработал для этого надстройку Visual Studio, но у меня возникли некоторые проблемы. Я могу добавить пункт меню в контекстное меню, но не могу его удовлетворить.

  1. Пункт меню должен быть подменю "Добавить". Не корневой элемент.

  2. Мне также нужно, чтобы элемент меню отображался только тогда, когда я щелкаю правой кнопкой мыши по папке с именем "Области". Я не хочу, чтобы он отображался, когда я щелкаю правой кнопкой мыши по другим папкам.

Вот мой OnConnection код функции. Как я могу изменить его, чтобы удовлетворить мои требования.

public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = ((AddIn)addInInst);
        if (connectMode == ext_ConnectMode.ext_cm_UISetup)
        {
            object[] contextGUIDS = new object[] { };
            Commands2 commands = (Commands2)_applicationObject.Commands;

            //Place the command on the tools menu.
            //Find the MenuBar command bar, which is the top-level command bar holding all the main menu items:
            var bars=((Microsoft.VisualStudio.CommandBars.CommandBars)_applicationObject.CommandBars);

            Microsoft.VisualStudio.CommandBars.CommandBar menuBarCommandBar = bars["MenuBar"];

            //Find the Tools command bar on the MenuBar command bar:
            //CommandBarControl toolsControl = menuBarCommandBar.Controls[toolsMenuName];
            //CommandBarPopup toolsPopup = (CommandBarPopup)toolsControl;
            // get popUp command bars where commands will be registered.
            CommandBars cmdBars = (CommandBars)(_applicationObject.CommandBars);
            //CommandBar vsBarItem = cmdBars["Item"]; //the pop up for clicking a project Item
            CommandBar vsBarFolder = cmdBars["Web Project Folder"];
            CommandBar vsBarWebFolder = cmdBars["Web Folder"];

            //This try/catch block can be duplicated if you wish to add multiple commands to be handled by your Add-in,
            //  just make sure you also update the QueryStatus/Exec method to include the new command names.
            try
            {
                //Add a command to the Commands collection:
                Command command = commands.AddNamedCommand2(_addInInstance, "ModuleAddin", "Add a Project", "Executes the command for ModuleAddin", true, 59, ref contextGUIDS, (int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled, (int)vsCommandStyle.vsCommandStylePictAndText, vsCommandControlType.vsCommandControlTypeButton);
                //Add a control for the command to the tools menu:
                if (command != null)
                {
                    //command.AddControl(toolsPopup.CommandBar, 1);
                    command.AddControl(vsBarFolder);
                    //CommandBarButton button = (CommandBarButton)command.AddControl(vsBarFolder, 3);
                    //button.BeginGroup = true;
                }
            }
            catch (System.ArgumentException argEx)
            {
                System.Diagnostics.Debug.Write("Exception in HintPaths:" + argEx.ToString());
            }
        }
    }

1 ответ

Вам не нужно надстройки для этого.

Нужно ли мне копировать чей-то пост в блоге, чтобы я не получил отрицательный отзыв за публикацию полезной ссылки? Вы, люди, знаете о https://archive.org/, верно?

Ссылка: http://nickmeldrum.com/blog/how-to-run-powershell-scripts-from-solution-explorer-in-visual-studio-2010

Вставленное в копию сообщение в блоге...

Шаг 1: Добавление "запуска сценария powershell" в качестве внешнего инструмента

  1. В Visual Studio зайдите в меню: Инструменты | Внешние инструменты
  2. Нажмите кнопку "Добавить"
  3. Добавьте следующие значения формы:

    • Заголовок: "Запустить скрипт Powershell в окне вывода"
    • Команда: "C:\windows\system32\windowspowershell\v1.0\powershell.exe"
    • Аргументы: " -file "$(ItemPath)"
    • Начальный каталог: "$(ItemDir)"
    • Галочка "Использовать окно вывода"
    • (Закрыть при выходе теперь будет автоматически включен)
  4. Нажмите кнопку "Применить"

  5. Нажмите кнопку "Добавить"

  6. Добавьте следующие значения формы:

    • Название: "Запустите скрипт powershell за пределами VS"
    • Команда: "C:\windows\system32\windowspowershell\v1.0\powershell.exe"
    • Аргументы: " -file "$(ItemPath)"
    • Начальный каталог: "$(ItemDir)"
    • Не ставьте галочку "Использовать окно вывода"
    • Галочка "Закрыть на выходе"
  7. Нажмите кнопку "ОК"

Они должны выглядеть примерно так:

Шаг 2: Странный шаг, поверь мне!

Проверьте позицию индекса в списке внешних инструментов. По умолчанию мои находятся на позициях 6 и 7. (Я думаю, что по умолчанию Create GUID № 1!)

Шаг 3: подключите его к контекстным меню

  1. Зайдите в меню: Инструменты | Настроить | команды
  2. Выберите опцию "Контекстное меню"
  3. Прокрутите вниз до "Контекстные меню проекта и решения | Элемент" (кошмарное длинное меню, наберите "Proj", чтобы примерно добраться до нужного места)
  4. Нажмите кнопку "Добавить команду"
  5. Выберите категорию: "Инструменты" и Команду: "Внешняя команда 7" (или какую бы позицию вы ни получили из "Странного шага 2")
  6. Нажмите кнопку "ОК"
  7. Затем для настройки 2-й команды:
  8. Выберите категорию: "Инструменты" и команду: "Внешняя команда 8" (или какова бы ни была ваша позиция для другой)
  9. Нажмите кнопку "ОК" еще раз
  10. Перемещайте их, пока вы не будете довольны их заказом (я обычно помещаю их где-то ниже "Открыть с помощью...")

Шаг 4: Добавьте ваши сочетания клавиш

  1. Зайдите в меню: Инструменты | Опции
  2. Выберите среду | Клавиатура
  3. Найдите в списке элемент Tools.ExternalCommandN (снова длинный кошмарный список, наберите "Инструменты", чтобы снова оказаться там примерно)
  4. Выберите вашу комбинацию клавиш для каждой команды: мне нравятся CTRL SHIFT P и CTRL SHIFT ALT P соответственно

ohai

Другие вопросы по тегам