Ric*_*ahl 6 visual-studio vsix
我有一个内部扩展我想添加到Visual Studio,它应该连接到编辑器上下文菜单 - 无论打开什么类型的文件.我可以动态处理启用/可见性,但实际上我希望它可以在任何类型的编辑器文件中访问.
我无法找到正确的父命令/组ID来设法在编辑器上下文菜单上显示自定义按钮.我怀疑没有一个Id,但有几个但是我应该关注的任何指导.很难弄清楚正确的父命令Id是什么来连接编辑器上下文菜单.
具体来说,我需要能够将Visual in Browser选项中的选项添加到Visual Studio无法识别为HTML/Web文件的文件中(即使它们已映射到相应的编辑器).
相关:无论如何以合理的方式发现菜单命令和组名?在SharedCommandPlace.vsct中进行探索就像我来的那样近,但即使这样也很难与实际的菜单项匹配.
Ric*_*ahl 12
我能够为上下文菜单找出正确的命令组.事实证明,各种编辑器都使用单独的上下文ID,因此必须作为单独的菜单进行管理,因此这很快就会变得混乱.
脚步
HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\Generalkey和EnableVSIPLogging值1来启用日志记录.这给出了menu group类似的信息,它看起来像这样:
---------------------------
VSDebug Message
---------------------------
Menu data:
Guid = {D7E8C5E1-BDB8-11D0-9C88-0000F8040A53}
GuidID = 358
CmdID = 53
Type = 0x00000400
Flags = 0x00000000
NameLoc = ASPX Context
---------------------------
OK
---------------------------
Run Code Online (Sandbox Code Playgroud)
重要的值是GUID和CommandID.
Symbols像这样添加Guid和Command ID 来注册将Guid映射到CommandSet的命令集,并将CommandId映射到上下文菜单值:
<GuidSymbol name="aspxContextCommandSet" value="{D7E8C5E1-BDB8-11D0-9C88-0000F8040A53}">
<IDSymbol name="aspxContextMenu" value="0x0035"/>
</GuidSymbol>
Run Code Online (Sandbox Code Playgroud)
请注意,该值映射到表示为十六进制值的CommandID.
然后在以下Groups部分中将此组引用为命令组(MyMenuGroup)的父组:
<Group guid="guidViewInBrowserPackageCmdSet" id="MyMenuGroup" priority="0x0000">
<Parent guid="aspxContextCommandSet" id="aspxContextMenu"/>
</Group>
Run Code Online (Sandbox Code Playgroud)
您可以引用为命令按钮创建的菜单组,并指向上一步中创建的上下文菜单.
如果你想为多个编辑器(例如ASPX,HTML和代码编辑器,例如我这样做)执行此操作,则通过添加GuidSymbol和Group重复此过程.您将最终得到同一MenuGroup的多个组条目位于不同的父级,并且所有组都将相应地激活.
效果很好,但您可能必须确保OleMenuCommand使用BeforeQueryStatus事件处理程序过滤对象,以确保菜单仅在您实际可以处理时显示.
小智 6
我需要同样的东西,我使用了:
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
Run Code Online (Sandbox Code Playgroud)
所以,我只是改变了id。请参阅:https : //msdn.microsoft.com/en-us/library/microsoft.visualstudio.shell.vsmenus.idm_vs_ctxt_codewin.aspx
小智 3
EnableVSIPLogging 注册表值仍然适用于 VS 2015。您只需在 HKEY_CURRENT_USER\SOFTWARE\Microsoft\VisualStudio\14.0\General 下添加一个设置为 1 的 EnableVSIPLogging DWORD。
如果 CTRL+SHIFT + 弹出菜单或选择菜单没有出现该对话框,则可能是相关菜单项未实现为 VSCT 资源。
话虽这么说,您可能需要进行一些试验,因为编辑器和设计器不需要使用代码编辑器使用的相同上下文菜单。
另外,您可能想尝试https://visualstudiogallery.msdn.microsoft.com/ab39a092-1343-46e2-b0f1-6a3f91155aa6 (2017) 或https://marketplace.visualstudio.com/上的 Mads“扩展性工具”扩展items?itemName=MadsKristensen.ExtensibilityEssentials2019 (2019)。
他为 VSCT 文件添加了一个非常有用的自动完成功能。
| 归档时间: |
|
| 查看次数: |
7209 次 |
| 最近记录: |