.net 附加项以添加解决方案资源管理器中“解决方案”或“项目”节点的菜单
在visual studio解决方案资源管理器上单击鼠标右键时,如何为“添加”菜单项添加子菜单 我必须添加一个子菜单项,该子菜单项将在右键单击visual studio解决方案时显示,并移动到该菜单中的“添加”选项.net 附加项以添加解决方案资源管理器中“解决方案”或“项目”节点的菜单,.net,visual-studio-extensions,vsx,vspackage,vsct,.net,Visual Studio Extensions,Vsx,Vspackage,Vsct,在visual studio解决方案资源管理器上单击鼠标右键时,如何为“添加”菜单项添加子菜单 我必须添加一个子菜单项,该子菜单项将在右键单击visual studio解决方案时显示,并移动到该菜单中的“添加”选项 我正在尝试使用.vsct(vs包)。请帮我提些有价值的建议当然,也有类似的问题,但这似乎是一个特例 通常,您需要知道要扩展的菜单的命令和包id。我通常通过在注册表中启用enablevsiploging选项来实现这一点,如本文所述: . Visual Studio 2005引入了Ena
我正在尝试使用.vsct(vs包)。请帮我提些有价值的建议当然,也有类似的问题,但这似乎是一个特例 通常,您需要知道要扩展的菜单的命令和包id。我通常通过在注册表中启用
enablevsiploging
选项来实现这一点,如本文所述:
. Visual Studio 2005引入了EnableVSIPLogging
选项,但在任何较新版本中仍然有效
启用EnableVSIPLogging
选项后,您可以在按住Ctrl+Shift的同时单击菜单项(或与命令互连的任何其他UI元素),显示所需信息。这将显示一个包含包guid和命令/菜单id的消息框;Ctrl+C将显示的菜单或命令数据复制到剪贴板,顺便说一句。如果您对菜单数据感兴趣(如果是上下文菜单,请在悬停项目之前按Ctrl+Shift)
这是我在我的机器上得到的
---------------------------
VSDebug Message
---------------------------
Menu data:
Guid = {D309F791-903F-11D0-9EFC-00A0C911004F}
GuidID = 4
CmdID = 850
Type = 0x00000100
Flags = 0x00000000
NameLoc = A&dd
---------------------------
OK
---------------------------
菜单信息可用于编写VSCT
文件;这个问题可能会引起您的兴趣:
在阅读另一个问题的答案时,您可能想知道这些人是如何计算出命令guid的名称的。。。这些名称由Visual Studio SDK中包含的vsshlids.h
头文件定义。因此,对于上面显示的guid,我们发现
// Guid for Shell's group and menu ids
DEFINE_GUID (guidSHLMainMenu,
0xd309f791, 0x903f, 0x11d0, 0x9e, 0xfc, 0x00, 0xa0, 0xc9, 0x11, 0x00, 0x4f);
我们可以使用guidshlmain菜单
进行组定义
<Group guid="your-command-set" id="your-group-id">
<Parent guid="guidSHLMainMenu" id="..." />
</Group>
还有一个命令
<IDSymbol name="cmdIdAddItemHelloWorld" value="0x1082" />
为了使按钮也出现在解决方案节点的Add
菜单中,我使用了一个命令放置
<CommandPlacements>
<CommandPlacement guid="your-command-set"
id="cmdIdAddItemHelloWorld" priority="0x1100">
<Parent guid="your-command-set" id="grpIdSolutionContextAdd" />
</CommandPlacement>
</CommandPlacements>
对我来说,使用cmdidShellWindowNavigate7
和cmdidShellWindowNavigate5
常数,但结果是
您能提供一个带有示例代码的文件链接吗?谢谢@Matze,这真的很有帮助。我想查找一些关于vsct的文档,因为我仍然不知道您是如何发现“cmdidShellWindowNavigate7”实际上是“Project”添加菜单的
<Groups>
<Group guid="your-command-set" id="grpIdProjectContextAdd">
<Parent guid="guidSHLMainMenu" id="cmdidShellWindowNavigate7" />
</Group>
<Group guid="your-command-set" id="grpIdSolutionContextAdd">
<Parent guid="guidSHLMainMenu" id="cmdidShellWindowNavigate5" />
</Group>
</Groups>
<Commands>
<Button guid="your-command-set"
id="cmdIdAddItemHelloWorld" priority="0x1100" type="Button">
<Parent guid="your-command-set" id="grpIdProjectContextAdd" />
<Strings>
<ButtonText>Hello World</ButtonText>
</Strings>
</Button>
</Commands>
<CommandPlacements>
<CommandPlacement guid="your-command-set"
id="cmdIdAddItemHelloWorld" priority="0x1100">
<Parent guid="your-command-set" id="grpIdSolutionContextAdd" />
</CommandPlacement>
</CommandPlacements>