2016-09-06 66 views
0

我试着去我们的SSMS 2014插件改写到一个扩展SSMS 2016年在对象资源管理器中添加上下文菜单SSMS 2016

我似乎无法找到一种方法,一个菜单或命令添加到上下文对象浏览器的菜单。

在微软网站,我可以找到很多的ID的所有窗口(https://msdn.microsoft.com/en-us/library/cc826118.aspx) 而不是对象资源管理器(对象浏览器是一个不同的窗口)

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

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

任何人都可以告诉我对象浏览器上下文菜单的id?

回答

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

+0

什么是“ServiceManager”?在哪个dll中存在?它会帮助我极大地 –

+0

@ user2033402对不起,这是我们的内部课程。我们用它来获得DTE服务 –

相关问题