我知道已经有一些关于这个的帖子,但是对我来说都不起作用。
我的需求: 我需要在Visual Studio源代码控制资源管理器的上下文菜单中添加一个新条目。为此,我开始了一个新的Add-In项目。
我使用的内容: 我使用了这篇文章作为指南。 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);
}
当我仔细查看命令栏“parent”时,它会给我带来很多异常:
如果我更仔细地观察它,“accChildCount = 'parent.accChildCount'”会引发类型为“Microsoft.VisualStudio.PlatformUI.Automation.DeprecatedException”的异常。
每个其他的“acc”值也是如此。
现在我真的不知道我做错了什么,或者还可以尝试什么来使其正常工作。我想要做的就是在源代码控制资源管理器中添加一个上下文菜单项,该项应调用Power Tools命令行exe来调用其中的“撤消未更改”的功能。