【问题标题】:add Context menu in object explorer for SSMS 2016在 SSMS 2016 的对象资源管理器中添加上下文菜单
【发布时间】:2016-09-06 11:13:49
【问题描述】:

我正在尝试将 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?

【问题讨论】:

    标签: c# ssms-2016


    【解决方案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 - 这是我们的内部类。 请查看MSDNHow to: Get a Service from the DTE Object

    【讨论】:

    • 什么是“ServiceManager”?它存在于哪个dll中?这对我有很大帮助
    • @user2033402 抱歉,这是我们的内部类。我们用它来获取 DTE 服务
    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2020-03-18
    相关资源
    最近更新 更多