我正在进行扩展,必须删除自定义命令然后重新添加它。现在,当我尝试运行扩展时,我收到一条错误说
菜单命令已有命令处理程序。
有没有人遇到过这个?任何想法如何解决?我已经尝试创建一个新的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);
}
}
在commandService.AddCommand(menuItem)上;当我尝试从Visual Studio中的菜单调用不同的命令时。
再次感谢您的帮助!
答案 0 :(得分:1)
您是否尝试过重置实验实例?您的开始菜单中应该有一个名为Reset the Visual Studio 2015 Experimental Instance
的批处理文件。运行它,它将确保一切都重置回默认状态。我猜这里发生的事情是你更改了扩展包的标识符,并且新的扩展包的标识符与前一个一起安装,它仍然为你试图添加的命令提供处理程序。