我正在使用菜单命令构建Visual Studio扩展(VSIX),具体取决于扩展的选项。它的动态,命令(多少)取决于选项。
我有一个使用命令表的解决方案,例如:Dynamically add menu items
我想跳过命令表并完全以编程方式构建菜单,例如:HOWTO: Package with commands created by code
原因是使其更具动态性。因此,如果用户在扩展名的选项中添加/更改/删除,则将对其进行动态(编程)处理。在保存选项时,将重新构建菜单命令树。如果使用命令表,则必须在其中添加/删除节点才能解决该问题。
我不知道的事情是如何以编程方式添加“组”和“菜单”的对象。
所以我很喜欢以“ AddGroup”或“ AddMenu”作为方法的类/接口。
这是完全可能的还是我必须使用命令表?如果可能的话,我将感谢您指向其代码示例的链接。
关于汉斯
答案 0 :(得分:0)
MVP Carlos Quintero已使用IVsProfferCommmands3.AddNamedCommand发布了示例代码,该代码说明了如何通过自动化服务(以前已停止使用的外接程序可扩展性模型使用)以编程方式添加菜单项。
https://github.com/visualstudioextensibility/VSX-Samples/tree/master/PackageCommandsCreatedByCode
虽然不再支持外接程序,但自动化界面仍然存在。因此,请记住这些菜单项(又称命令)是临时的。
此外,此处的示例代码有些过时了,使用Package而不是AsyncPackage和ProvideAutoLoad属性。因此,您还需要阅读以下内容:
https://github.com/microsoft/VSSDK-Extensibility-Samples/tree/master/AsyncPackageMigration https://devblogs.microsoft.com/visualstudio/updates-to-synchronous-autoload-of-extensions-in-visual-studio-2019/
此致