visual studio插件开发-Menu( 二 )

如果想要展示在vs的下面这些菜单里面 , 直接可以用上面的方式 修改id就可以了

visual studio插件开发-Menu

文章插图
image
id的定义都在vsshlids.h 头文件,常用的如下
-》vs的最上面一排菜单#define IDM_VS_MENU_FILE              0x0080#define IDM_VS_MENU_EDIT              0x0081#define IDM_VS_MENU_VIEW              0x0082#define IDM_VS_MENU_PROJECT           0x0083#define IDM_VS_MENU_TOOLS             0x0085#define IDM_VS_MENU_WINDOW            0x0086#define IDM_VS_MENU_ADDINS            0x0087#define IDM_VS_MENU_HELP              0x0088#define IDM_VS_MENU_DEBUG             0x0089#define IDM_VS_MENU_FORMAT            0x008A#define IDM_VS_MENU_ALLMACROS         0x008B#define IDM_VS_MENU_BUILD             0x008C#define IDM_VS_MENU_CONTEXTMENUS      0x008D#define IDG_VS_MENU_CONTEXTMENUS      0x008E#define IDM_VS_MENU_REFACTORING       0x008f#define IDM_VS_MENU_COMMUNITY         0x0090#define IDM_VS_MENU_EXTENSIONS        0x0091-》 工程文件右键菜单 对应上图的13#define IDM_VS_CTXT_PROJNODE          0x0402-》代码窗口的右键菜单操作 对应上图的14#define IDM_VS_CTXT_CODEWIN           0x040D-》解决方案的右键菜单操作 对应上图的15#define IDM_VS_CTXT_SOLNNODE          0x0413-》 某个文件的右键菜单 这个也经常用#define IDM_VS_CTXT_ITEMNODE          0x0430各个含义说明也可以参考文档:
https://learn.microsoft.com/en-us/visualstudio/extensibility/internals/guids-and-ids-of-visual-studio-menus?view=vs-2022
比如我把上面的demo改成这样
<Groups>  <Group guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup" priority="0x0600">    <!-- 工程文件右键菜单 -->    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>  </Group></Groups>
visual studio插件开发-Menu

文章插图
image
改成这样就会显示在代码窗口的右键菜单中
<Groups>  <Group guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup" priority="0x0600">    <!-- 代码窗口的右键菜单操作 -->    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>  </Group></Groups>
visual studio插件开发-Menu

文章插图
image
所以一级菜单只需要添加一个Group 并且设置该Group的Parent为已知的定义ID即可
二级菜单这里需要添加Menu了 且 一级菜单项要定义为Menu而不是Button?。?
先新建一个group1以**右键菜单为parent(已知定义ID)**,以group1为parent , 再定义一个group2以一级菜单Menu为parent,再将二级菜单项定义为Button并以group2为parent
有点绕吧,比如我要在工程文件的右键菜单 添加一个二级菜单,像下面这样子

visual studio插件开发-Menu

文章插图
image
  1. 在Groups节点下新建一个group:MyMenuGroup1 以工程右键菜单为parent
<Group guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup1" priority="0x0600">    <!--定义在头文件的已知定义ID -->    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/></Group>

推荐阅读