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>

推薦閱讀