2016-09-06 67 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服務 –

相關問題