Visual Studio 扩展 - 'Server Explorer' 的上下文菜单
Visual Studio Extention - Context Menu for 'Server Explorer'
在 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
将导致上下文菜单出现在代码 window 中。
这在此处记录:
Microsoft Documentation
但是,我希望我的上下文菜单显示在 'Server Explorer' 中。文档的示例和 link 会非常有帮助。
要查找 Visual Studio 菜单 guid,这通常有效。
在您的注册表中,将 HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio.0\General
.
下的 EnableVSIPLogging DWORD 设置为 1
重新启动 Visual Studio(和计算机?)并按住 Ctrl+Shift 并右键单击服务器资源管理器中的项目,它将打开一个对话框 window,内容如下:
你可以从那里开始。
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_ 进入工具栏菜单
多亏了 Paul Swetz 和 James Sinclair,我才得以完成这项工作。
使用 Paul Swetz 描述的方法,我可以识别我正在单击的服务器 Window 对象所需的 GUID,在本例中为 table 节点。
得到后,我将该 id 添加到 .vsct 文件中的 Symbols,并使用我选择的名称:
<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>
现在唯一的问题是识别和访问选定的 table 和数据库,但这是另一回事。
在 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
将导致上下文菜单出现在代码 window 中。
这在此处记录: Microsoft Documentation
但是,我希望我的上下文菜单显示在 'Server Explorer' 中。文档的示例和 link 会非常有帮助。
要查找 Visual Studio 菜单 guid,这通常有效。
在您的注册表中,将 HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio.0\General
.
重新启动 Visual Studio(和计算机?)并按住 Ctrl+Shift 并右键单击服务器资源管理器中的项目,它将打开一个对话框 window,内容如下:
你可以从那里开始。
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_ 进入工具栏菜单
多亏了 Paul Swetz 和 James Sinclair,我才得以完成这项工作。
使用 Paul Swetz 描述的方法,我可以识别我正在单击的服务器 Window 对象所需的 GUID,在本例中为 table 节点。
得到后,我将该 id 添加到 .vsct 文件中的 Symbols,并使用我选择的名称:
<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>
现在唯一的问题是识别和访问选定的 table 和数据库,但这是另一回事。