Visual studio 在VS解决方案资源管理器中,如何扩展源文件子代码元素(类/方法/字段)上的右键单击菜单

Visual studio 在VS解决方案资源管理器中,如何扩展源文件子代码元素(类/方法/字段)上的右键单击菜单,visual-studio,menu,vsix,solution-explorer,Visual Studio,Menu,Vsix,Solution Explorer,我正在开发一个VisualStudio扩展(VSIX) 我需要在解决方案资源管理器上添加自定义右键单击菜单,右键单击类/方法/字段项,可在源文件项下找到: 在.vsct文件中,我已经通过以下方式扩展了解决方案资源管理器项目/文件夹/源文件/引用右键单击菜单: <CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100"> <Parent guid="

我正在开发一个VisualStudio扩展(VSIX)

我需要在解决方案资源管理器上添加自定义右键单击菜单,右键单击类/方法/字段项,可在源文件项下找到:

在.vsct文件中,我已经通过以下方式扩展了解决方案资源管理器项目/文件夹/源文件/引用右键单击菜单:

<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" />
</CommandPlacement>
<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" />
</CommandPlacement>
<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_FOLDERNODE" />
</CommandPlacement>
<CommandPlacement guid="guidNDepend_PackageCmdSet" id="grpSolutionExplorer" priority="0x100">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_REFERENCE" />
</CommandPlacement>    
谢谢你的帮助

(请注意,在触发
QueryStatus()
处理程序之前,我已经有了一些复杂的代码来解析右键单击的代码元素,这些元素是从
IVsSelectionEvents.OnSelectionChanged()
调用的)

请参见:

以及:


谢谢卡洛斯,我成功了:)让我们解释一下。首先,正如我在博客文章中所解释的,我设置了regkey:

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\General]
"EnableVSIPLogging"=dword:00000001
然后重新启动VS2013,按住Ctrl+SHIFT键并在SlnExplorer窗口中右键单击文件内容类。我明白了:

Guid是
guidshlmain菜单
one,但我需要从值
1842
0x0732
十六进制)中获取命令ID。我在谷歌上搜索了一下,找到了。我安装了VS2013 SDK。我查找了头文件
vsshlids.h
的位置。它是在:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VSSDK\VisualStudioIntegration\Common\Inc
在这个目录中,我搜索了任何包含
732
的文本文件。我发现

#define IDM_VS_CTXT_PROJWIN_FILECONTENTS            0x732  // Context menu for GraphNode items in the Solution Explorer


因此,我想要的名称是IDM\u VS\u CTXT\u PROJWIN\u FILECONTENTS,实际上,有了这个值,它就像一个符咒;谢谢卡洛斯

现在两个链接都无效(但这不是你的错)但是谢谢你的帮助。对于VS2017,我还需要在regedit中选择HKEY_用户,文件>加载配置单元,选择文件:“C:\USERS\user\AppData\Local\Microsoft\VisualStudio\15.0_effa0b41Exp\privateregistry.bin”,键入为VS2017_exp,和选定的注册表分支:HKEY_USERS\vs2017_exp\Software\Microsoft\VisualStudio\15.0\U effa0b41Exp\General,否则工作原理相同。
#define IDM_VS_CTXT_PROJWIN_FILECONTENTS            0x732  // Context menu for GraphNode items in the Solution Explorer
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VSSDK\VisualStudioIntegration\Common\Inc\vsshlids.h