2021-05-19 乐帮网
visual studio
开发环境 Visaul Studio 2019 + Windows 10,实现效果:在Visaul Studio顶部添加一个子菜单,通过点击菜单运行我们自定义的代码。本篇的目的是通过简单的入门教程,来大概了解下Vxis项目的开发流程。
在开发之前需要做一些前提准备参见:https://lebang2020.cn/details/2105185lzeqif4.html
(1) 新建一个VSIX项目,创建项目时选择 VSIX模板,之后一路默认下一步创建项目“VktVSIXProject”。
(2)在项目上点击右键添加命令行类“PublishCommand”,如下图:
(3)开始通过vsct添加菜单,注意这里与之前不同的地方是,旧版本模板需要手动在vsct中添加资源。Visaul Studio 2019的新模板中已经不需要我们添加任何东西了,直接就可以运行了。这里还是简单介绍下它的结构,打开 vsct文件我可以看到有配置以下资源。
<Groups>
<Group guid="guidVktVSIXProjectPackageCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
</Groups>
这个是最项层,指定了菜单载体的位置,关键信息 Parent id="IDM_VS_MENU_TOOLS"
详细内容可以参见:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2015/extensibility/internals/guids-and-ids-of-visual-studio-menus?view=vs-2015
常见的有以下类型:
DM_VS_CTXT_SOLNNODE 是指的解决方案资源管理器里的 解决方案,
IDM_VS_CTXT_SOLNFOLDER 是指的解决方案资源管理器里的 解决方案里的文件夹,不是项目里的哈,这个文件夹是虚拟的,没有实际的文件夹映射,
IDM_VS_CTXT_PROJNODE 是指的解决方案资源管理器里的 项目,
IDM_VS_CTXT_FOLDERNODE 是指的解决方案资源管理器里的 项目里的文件夹,
IDM_VS_CTXT_ITEMNODE 是指的解决方案资源管理器里的 项目里的项,就例如cs、js文件
<Buttons>
<Button guid="guidVktVSIXProjectPackageCmdSet" id="PublishCommandId" priority="0x0100" type="Button">
<Parent guid="guidVktVSIXProjectPackageCmdSet" id="MyMenuGroup" />
<Icon guid="guidImages" id="bmpPic1" />
<Strings>
<ButtonText>Invoke PublishCommand</ButtonText>
</Strings>
</Button>
</Buttons>
这一部分就是菜单的内容了,可以看到引用图片资源,在下面可以定义它。
<Bitmaps>
<Bitmap guid="guidImages" href="Resources\PublishCommand.png" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows, bmpPicStrikethrough"/>
</Bitmaps>
最后就是资源汇总了,所有的资源 这里指定ID汇总。如下:
<Symbols>
<GuidSymbol name="guidVktVSIXProjectPackage" value="{cfdbd530-a6db-4940-bc69-a1157ed05de0}" />
<GuidSymbol name="guidVktVSIXProjectPackageCmdSet" value="{61e6900d-533a-4383-a0c4-692f6b1875c4}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="PublishCommandId" value="0x0100" />
</GuidSymbol>
<GuidSymbol name="guidImages" value="{a7ab2b90-2a9a-4f46-8e4e-b9def300a129}" >
<IDSymbol name="bmpPic1" value="1" />
<IDSymbol name="bmpPic2" value="2" />
<IDSymbol name="bmpPicSearch" value="3" />
<IDSymbol name="bmpPicX" value="4" />
<IDSymbol name="bmpPicArrows" value="5" />
<IDSymbol name="bmpPicStrikethrough" value="6" />
</GuidSymbol>
</Symbols>
(4)运行程序,直接F5就可以新打一个开窗口,在菜单“工具 ”中可以找到我们新的菜单如下图:
(5)发布成插件,我们可以直接在项目中右键,选择重新生成。然后在 bin\Debug 中我们可以直接找到VktVSIXProject.vsix,正是我们需要的文件。
最后提供示例源码下载:链接: https://pan.baidu.com/s/16zI1QFgH1ge9eTwTDfqr9Q
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力