visual studio插件开发-Menu( 二 )

  • Menus 是菜单/工具栏的集合 。菜单是Commands的容器 。
  • Groups 决定菜单的位置
  • Buttons 表示命令按钮/菜单项
  • Bitmaps 按钮/菜单项的图标配置
CommandPlacements 指示各个命令应位于VSPackage菜单中的其他位置 。Symbols 包含包中所有命令的符号名和GUID,ID 。KeyBindings 快捷键指定 例如Ctrl+S 。以上vsct的xml scheme 的详细说明在这里有文档
https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/extensibility/internals/designing-xml-command-table-dot-vsct-files.md
一级菜单<Groups>  <Group guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup" priority="0x0600">    <!-- 这个guid和id决定了菜单的位置 -->    <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>  </Group></Groups>如果想要展示在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>

经验总结扩展阅读