我正在處理擴展名,並且必須刪除自定義命令然後重新添加它。現在,當我嘗試運行擴展程序時,出現錯誤提示Visual Studio擴展 - 已經有一個命令處理程序菜單命令
菜單命令已經有一個命令處理程序。
有沒有人遇到過這個?任何想法如何解決?我試着創建一個新的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中的菜單中調用不同的命令時出現錯誤。
再次感謝您的幫助!
我認爲你需要添加代碼示例。否則這根本無法再現 – rbr94
根本不可能提供任何信息。很可能你沒有刪除現有的命令 - 你檢查了任何錯誤代碼嗎?結果?至少張貼您用於刪除命令的代碼 –
根據您的代碼,似乎可以,請創建一個新項目並將相關代碼複製到使用新Guid的新項目。檢查它是否有效。 –