Добавить элемент в контекстное меню папки Visual Studio в AddIn
Я хочу добавить пункт меню в контекстное меню => Добавить меню в обозревателе решений Visual Studio 2012. При нажатии на пользовательский элемент я могу добавить проект с моим шаблоном. Я разработал для этого надстройку Visual Studio, но у меня возникли некоторые проблемы. Я могу добавить пункт меню в контекстное меню, но не могу его удовлетворить.
Пункт меню должен быть подменю "Добавить". Не корневой элемент.
Мне также нужно, чтобы элемент меню отображался только тогда, когда я щелкаю правой кнопкой мыши по папке с именем "Области". Я не хочу, чтобы он отображался, когда я щелкаю правой кнопкой мыши по другим папкам.
Вот мой 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/, верно?
Вставленное в копию сообщение в блоге...
Шаг 1: Добавление "запуска сценария powershell" в качестве внешнего инструмента
- В Visual Studio зайдите в меню: Инструменты | Внешние инструменты
- Нажмите кнопку "Добавить"
Добавьте следующие значения формы:
- Заголовок: "Запустить скрипт Powershell в окне вывода"
- Команда: "C:\windows\system32\windowspowershell\v1.0\powershell.exe"
- Аргументы: " -file "$(ItemPath)"
- Начальный каталог: "$(ItemDir)"
- Галочка "Использовать окно вывода"
- (Закрыть при выходе теперь будет автоматически включен)
Нажмите кнопку "Применить"
Нажмите кнопку "Добавить"
Добавьте следующие значения формы:
- Название: "Запустите скрипт powershell за пределами VS"
- Команда: "C:\windows\system32\windowspowershell\v1.0\powershell.exe"
- Аргументы: " -file "$(ItemPath)"
- Начальный каталог: "$(ItemDir)"
- Не ставьте галочку "Использовать окно вывода"
- Галочка "Закрыть на выходе"
- Нажмите кнопку "ОК"
Они должны выглядеть примерно так:
Шаг 2: Странный шаг, поверь мне!
Проверьте позицию индекса в списке внешних инструментов. По умолчанию мои находятся на позициях 6 и 7. (Я думаю, что по умолчанию Create GUID № 1!)
Шаг 3: подключите его к контекстным меню
- Зайдите в меню: Инструменты | Настроить | команды
- Выберите опцию "Контекстное меню"
- Прокрутите вниз до "Контекстные меню проекта и решения | Элемент" (кошмарное длинное меню, наберите "Proj", чтобы примерно добраться до нужного места)
- Нажмите кнопку "Добавить команду"
- Выберите категорию: "Инструменты" и Команду: "Внешняя команда 7" (или какую бы позицию вы ни получили из "Странного шага 2")
- Нажмите кнопку "ОК"
- Затем для настройки 2-й команды:
- Выберите категорию: "Инструменты" и команду: "Внешняя команда 8" (или какова бы ни была ваша позиция для другой)
- Нажмите кнопку "ОК" еще раз
- Перемещайте их, пока вы не будете довольны их заказом (я обычно помещаю их где-то ниже "Открыть с помощью...")
Шаг 4: Добавьте ваши сочетания клавиш
- Зайдите в меню: Инструменты | Опции
- Выберите среду | Клавиатура
- Найдите в списке элемент Tools.ExternalCommandN (снова длинный кошмарный список, наберите "Инструменты", чтобы снова оказаться там примерно)
- Выберите вашу комбинацию клавиш для каждой команды: мне нравятся CTRL SHIFT P и CTRL SHIFT ALT P соответственно