我知道這裏已經有一些線索,但我不會爲我工作。VS2010加載項,添加命令到上下文菜單?
我想要的: 我需要在Visual Studio源代碼管理資源管理器的上下文菜單中有一個新條目。爲此我開始了一個新的插件項目。
我用什麼: 我用這篇文章爲指導。 http://blogs.msdn.com/b/team_foundation/archive/2010/06/24/extending-work-item-tracking-context-menus.aspx
什麼不工作: 我沒有得到任何例外,菜單不會顯示,無論我添加它在哪裏。
一些代碼片段:
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)
{
AddCommandToContextMenu(
"Team Project", // context menu Name
"ClearQuery", // menu reference name
"Clear", // display name
47, // command icon
1); // command placement, 1= first item on top
}
}
我使用測試 「團隊項目」 菜單名稱。 VSIPLogging告訴我,如果我右鍵點擊我們的TFS團隊項目,這就是菜單的名稱。我也試過其他菜單沒有成功。
這裏是AddCommandToContextMenu功能:
private void AddCommandToContextMenu(string menuName, string commandName, string commandText, int iconId, int position)
{
CommandBar contextMenu = ((CommandBars)_applicationObject.CommandBars)[menuName];
AddCommand(contextMenu, commandName, commandText, iconId, position);
}
private void AddCommand(CommandBar parent, string commandName, string commandText, int iconId, int position)
{
Commands2 commands = (Commands2)_applicationObject.Commands;
//create the command
Command newCommand = commands.AddNamedCommand2(_addInInstance, commandName, commandText, commandText, true, iconId);
// add it to parent menu
newCommand.AddControl(parent, position);
}
命令欄「父」讓我頗有些例外,如果我仔細看看吧:
accChildCount =「parent.accChildCount」拋出'Microsoft.VisualStudio.PlatformUI.Automation.DeprecatedException'類型的例外情況對於每個其他「acc」值都是相同的。
現在我真的不知道我做錯了什麼,或者我可以嘗試做什麼。我想要做的就是在源代碼控制瀏覽器中有一個上下文菜單條目,它應該調用電動工具命令行EXE來調用它的「撤消不變」功能。
我不會擔心DeprecatedExceptions太多;那些可能就在那裏,因爲MS不希望你使用過時的界面版本。自從它首次發佈以來,它們可能會稍微改變界面,並且出於兼容性原因無法刪除這些屬性。 – takrl 2011-07-06 16:01:39
你的QueryStatus方法在做什麼?該方法確定命令是隱藏還是可見,並且我注意到您指向的文章沒有給出實現它的示例。 – 2011-11-14 20:55:37
我有幾乎相同的代碼,除了我在「IDTExtensibility2.OnStartupComplete」方法中添加自定義命令。 與 「IDTExtensibility2.OnConnection」 方法中,我使用的 「ext_ConnectMode.ext_cm_AfterStartup」 而不是 「ext_ConnectMode.ext_cm_UISetup」: 如果(connectMode == ext_ConnectMode.ext_cm_AfterStartup) this.OnStartupComplete(參照定製); – 2011-11-29 21:42:54