2016-12-06 3 views
-1

Я работаю над расширением и должен удалить пользовательскую команду, а затем добавить ее. Теперь, когда я пытаюсь запустить расширение, я получаю сообщение об ошибкеVisual Studio Extension - для команды меню уже есть обработчик команд

Существует уже обработчик команд для команды меню.

Кто-нибудь сталкивался с этим раньше? Любые идеи, как исправить? Я попытался создать новый GUID и изменить commandId, но не повезло.

Выход Ошибка: исключение типа «System.ArgumentException» произошло в System.Design.dll, но не был обработан в пользовательском коде

Дополнительная информация: Существует уже обработчик команд для меню команда '4fd442a6-1a00-47ee-b98d-f11b0faafbe2: 256'.

Из файла VSCT:

<GuidSymbol name="guidVSProximityMenuPackageCmdSet3" value="{4FD442A6-1A00-47EE-B98D-F11B0FAAFBE2}"> 

    <IDSymbol name="ProximityProjectExplorerGroup" value="4128" /> 
    <IDSymbol value="256" name="cmdidGetNugetVersionCommand" /> 

</GuidSymbol> 

Из файла command.cs:

/// <summary> 
    /// Command ID. 
    /// </summary> 
    public const int CommandId = 256; 

    /// <summary> 
    /// Command menu group (command set GUID). 
    /// </summary> 
    public static readonly Guid CommandSet = new Guid("4FD442A6-1A00-47EE-B98D-F11B0FAAFBE2"); 

Исключение брошено из этого метода (находится в файле command.cs)

/// <summary> 
    /// Initializes a new instance of the <see cref="GetNugetVersionCommand"/> class. 
    /// Adds our command handlers for menu (commands must exist in the command table file) 
    /// </summary> 
    /// <param name="package">Owner package, not null.</param> 
    private GetNugetVersionCommand(Package package) 
    { 
     if (package == null) 
     { 
      throw new ArgumentNullException("package"); 
     } 

     this.package = package; 

     OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; 
     if (commandService != null) 
     { 
      var menuCommandID = new CommandID(CommandSet, CommandId); 
      var menuItem = new MenuCommand(this.MenuItemCallback, menuCommandID); 
      commandService.AddCommand(menuItem); 
     } 
    } 

В командеСервис.AddCommand (menuItem); когда я пытаюсь вызвать другую команду из меню в Visual Studio.

Еще раз спасибо за помощь!

+1

Думаю, вам нужно добавить образцы кода. В противном случае это не будет воспроизводиться вообще – rbr94

+1

Невозможно помочь без какой-либо информации. Скорее всего, вы не удалили существующую команду - вы проверяли какие-либо коды ошибок? Результаты? По крайней мере, отправьте код, который вы используете для удаления команды –

+0

Согласно вашему коду, кажется, все в порядке, создайте новый проект и скопируйте соответствующий код в новый проект, в котором используется новый Guid. Проверьте, работает ли он. –

ответ

1

Вы попробовали сбросить экспериментальный экземпляр? В вашем стартовом меню должен быть пакетный файл под названием Reset the Visual Studio 2015 Experimental Instance. Запустите это и убедитесь, что все возвращается к состоянию по умолчанию. Я предполагаю, что здесь произошло то, что вы изменили идентификатор вашего пакета расширения, а новый установлен рядом с предыдущим, который по-прежнему предоставляет обработчик для команды, которую вы пытаетесь добавить.

Смежные вопросы