Visual Studio 的菜单命令扩展,无命令-table

Menu-commands extension for Visual Studio without command-table

我正在构建一个 Visual Studio 扩展 (VSIX),其中包含取决于扩展选项的菜单命令。它是动态的,什么命令(多少)取决于选项。

我有一个解决方案,它使用命令-table,例如:Dynamically add menu items

我想跳过命令-table 并完全以编程方式构建菜单,例如:HOWTO: Package with commands created by code

原因是让它更有活力。因此,如果用户 adds/changes/deletes 在扩展的选项中,它将被动态(以编程方式)处理。在保存选项时,菜单命令树将被重建。如果我使用命令-table,我将不得不在那里 add/delete 个节点才能解决它。

我不明白的是如何以编程方式为 "groups" 和 "menus" 添加对象。

所以我支持以 "AddGroup" 或 "AddMenu" 作为方法的 class/interface。

这是完全可能的还是我必须使用命令-table?如果可能的话,我将不胜感激它的代码示例链接。

问候汉斯

MVP Carlos Quintero 已使用 IVsProfferCommmands3.AddNamedCommand 发布示例代码,说明如何通过自动化服务(以前由现已停产的 add-in 扩展模型使用)以编程方式添加菜单项。

https://github.com/visualstudioextensibility/VSX-Samples/tree/master/PackageCommandsCreatedByCode

虽然不再支持 add-in,但自动化界面仍然存在。所以您可以使用这些,请记住这些菜单项(又名命令)是临时的。

此外,这里的示例代码有点过时,使用 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/

此致,