在SSMS 2016的对象资源管理器中添加上下文菜单

时间:2016-09-06 11:13:49

标签: c# ssms-2016

我正在尝试将SSMS 2014的插件重写为SSMS 2016的扩展程序。

我似乎找不到将菜单或命令添加到对象资源管理器的上下文菜单的方法。

在Microsoft网站上,我可以找到所有窗口的大量ID(https://msdn.microsoft.com/en-us/library/cc826118.aspx) 但不适用于对象浏览器(对象浏览器是一个不同的窗口)

对于解决方案资源管理器,我可以在vsct文件中使用以下内容:

<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_SOLNNODE"/>

有人能告诉我对象资源管理器上下文菜单的ID吗?

1 个答案:

答案 0 :(得分:1)

像这样的东西

private IObjectExplorerService explorerService;
private List<MenuItem> menuItems = new List<MenuItem>();
// init
explorerService = DteServices.GetService<IObjectExplorerService>(dte);
//
explorerService.GetSelectedNodes(out nodeCount, out nodes);
INodeInformation node = nodes[0];
IMenuHandler menuHandler = node.GetService(typeof(IMenuHandler)) as IMenuHandler;
MethodInfo addChildMethod = menuHandler.GetType().GetMethod("AddChild");

for (int i = 0; i < menuItems.Count; i++)
  addChildMethod.Invoke(menuHandler, new object[] { string.Empty, menuItems[i] });

DteServices - 它是我们的内部课程。 请查看MSDN How to: Get a Service from the DTE Object