【问题标题】:Visual Studio Extention - Context Menu for 'Server Explorer'Visual Studio 扩展 - “服务器资源管理器”的上下文菜单
【发布时间】:2023-04-08 18:29:01
【问题描述】:

在 VSIX 项目中,在 .vsct 文件中,我可以看到如何定位不同的对象并提供自定义上下文菜单:

例如,以下将针对解决方案资源管理器中的项目节点:

    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE"/>
    <!--<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>-->
  </Group>

将 id 属性从 IDM_VS_CTXT_ITEMNODE 更改为 IDM_VS_CTXT_CODEWIN 将导致上下文菜单出现在代码窗口中。

这在此处记录: Microsoft Documentation

但是,我希望我的上下文菜单出现在“服务器资源管理器”中。一个示例和文档链接将非常有帮助。

【问题讨论】:

    标签: visual-studio-extensions


    【解决方案1】:

    要查找 Visual Studio 菜单向导,这通常是可行的。 在您的注册表中,在 HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\General 下将 EnableVSIPLogging DWORD 设置为 1。

    重新启动 Visual Studio(和计算机?)并按住 Ctrl+Shift 并右键单击服务器资源管理器中的项目,它将打开一个对话框窗口,如下所示:

    你可以从那里去。

    【讨论】:

    • 感谢您的回复。不幸的是,我无法在 14.0/General 下或通过搜索找到该密钥。我正在使用 VS 2015 Professional。
    • 你必须创建它 "EnableVSIPLogging" DWord = 1
    【解决方案2】:

    多亏了 Paul Swetz 和 James Sinclair,我才得以完成这项工作。

    使用 Paul Swetz 描述的方法,我可以识别我正在单击的服务器窗口对象所需的 guid,在本例中为表节点。

    知道后,我将该 ID 添加到 .vsct 文件中的符号中,并使用我选择的名称:

    <GuidSymbol name="guidWhatever" value="{d4f02a6a-c5ae-4bf2-938d-f1625bdca0e2}"> <!--//server explorer - table-->
      <IDSymbol name="IDMX_DV_OBJECT_NODE" value="0x8200"/>
    </GuidSymbol>
    

    现在我可以在群组中使用它,并且自定义命令会出现在下拉列表中。

    <Groups> 
      <Group guid="guidFirstCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600">
        <!--<Parent guid="{D309F791-903F-11D0-9EFC-00A0C911004F}" id="IDM_VS_CTXT_ITEMNODE"/>-->
        <Parent guid="guidWhatever" id="IDMX_DV_OBJECT_NODE"/>
      </Group>
    </Groups>
    

    现在唯一的问题是识别和访问选定的表和数据库,但这是另一回事。

    【讨论】:

    • 你有没有弄清楚如何确定选择的表和数据库是什么?
    • 我没有,我很害怕。
    【解决方案3】:

    VS 2015 的所有命令、菜单、工具栏等都在几个 c++ 头文件(stdidcmd.h 和 vsshlids.h)中有详细说明。

    在我的安装中,它们位于“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VSSDK\VisualStudioIntegration\Common\Inc”中。

    对文件进行了非常简短的查看,我认为您需要开始一些东西

    • IDG_SE_CONTEXT_ 到服务器资源管理器上下文菜单中的目标组
    • IDG_SE_TOOLBAR_​​ 进入工具栏
    • IDM_SE_CONTEXT_ 进入上下文菜单
    • IDM_SE_TOOLBAR_​​ 进入工具栏菜单

    【讨论】:

    • 多亏了这两个答案,我才得以完成这项工作,但它需要一个额外的步骤,如下所述。
    猜你喜欢
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    相关资源
    最近更新 更多