- 在Menus节点下新建一个menu:MyMenu,以上面的MyMenuGroup1位parent
<Menus> <Menu guid ="guidMenuDemoVSIXPackageCmdSet" id="MyMenu" priority="0x3110" type="Menu"> <Parent guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup1"/> <Strings> <ButtonText>New</ButtonText> <CommandName>New</CommandName> </Strings> </Menu></Menus>
- 再创建一个group:MyMenuGroup2 以上面的MyMenu为parent
<Group guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup2" priority="0x0600"> <Parent guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenu"/></Group>
- 创建Button以MyMenuGroup2为parent
<Buttons> <Button guid="guidMenuDemoVSIXPackageCmdSet" id="TestCommandId" priority="0x0100" type="Button"> <Parent guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup2" /> <Icon guid="guidImages" id="bmpPic1" /> <Strings> <ButtonText>Invoke TestCommand</ButtonText> </Strings> </Button></Buttons>
完整定义: 文章插图
如果想要同时显示在多个地方咋整比如 我既要显示在工程右键菜单里面,又要显示在普通文件的右键菜单,又要显示在代码右键菜单
这里就用到上面提到的 CommandPlacements
还是以上面的例子,这时候第一步的group1:MyMenuGroup2的parent就不能填了
而是要添加CommandPlacements , id要填 MyMenuGroup2,Parent填具体ID
<CommandPlacements> <CommandPlacement guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup1" priority="0x0000"> <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/> </CommandPlacement> <CommandPlacement guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup1" priority="0x0000"> <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" /> </CommandPlacement> <CommandPlacement guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup1" priority="0x0000"> <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN" /> </CommandPlacement></CommandPlacements>
文章插图
文章插图
文章插图
是json文件的才展示
文章插图
在Button的增加 DynamicVisibility
<Button guid="guidMenuDemoVSIXPackageCmdSet" id="TestCommandId" priority="0x0100" type="Button"> <Parent guid="guidMenuDemoVSIXPackageCmdSet" id="MyMenuGroup2" /> <!--这个 --> <CommandFlag>DynamicVisibility</CommandFlag> <Icon guid="guidImages" id="bmpPic1" /> <Strings> <ButtonText>Invoke TestCommand</ButtonText> </Strings></Button>
让VsPackage随着项目启动后就立即加载,不然动态判断逻辑无法提前指定 文章插图
修改Command的初始化方法,拿到DTE,很多功能点需要用到它里面的接口,比如拿到当前选择的item
文章插图
文章插图
总结我觉得对于visual studio中如何用插件来扩展menu 大概了解上面几点就差不多了 , 希望能帮助到你
推荐阅读
- 【pytest官方文档】解读-开发可pip安装的第三方插件
- 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件
- 苹果手机红包秒收怎么设置(苹果红包插件黑科技)
- 从0开始写一个简单的vite hmr 插件
- 钩子 【pytest官方文档】解读-插件开发之hooks 函数
- 插件化编程之WebAPI统一返回模型
- 超详细 R及R Studio下载安装教程
- 浅谈 Golang 插件机制
- .net程序员的android studio 初体验 (环境设置2022年10月)
- 中 ?打造企业自己代码规范IDEA插件