如何使用 vspackage 在 visual studio 中合并来自不同扩展名的两个具有相同名称的顶级菜单

How to merge two top level menu with same name from different extension in visual studio using vspackage

我从扩展项目中创建了名称为 "CustomMenu" 的顶级菜单,并且还从另一个扩展中创建了另一个具有相同名称的顶级菜单 project.After 我安装了两个扩展菜单并显示了多次。

如何在 visual studio 中合并来自多个扩展程序 (VSIX) 的顶级菜单。 enter image description here

"Merging" 这样是不可能的。虽然两个顶级菜单的标题相同,但它们是不同的项目,每个项目由您在 .vsct 文件的

元素中指定的两部分标识:

  1. 您也在 .vsct 文件中声明的包的命令集的 Guid
  2. 菜单的 Id

两个包中的 ID 可以相同,但每个包的 Guid 是(并且应该)唯一的。

如果保证始终以相同的顺序安装扩展,您可以做的是创建组(菜单条目、按钮等的 parents)由第一个包创建的顶部菜单上的第二个包,使用它的 Guid/Id 作为 parent (就像你将新项目添加到 VS 提供的 built-in 菜单,你使用 "guidSHLMainMenu"是Visual Studio主菜单命令集的guid)。