Visaul Studio Vsix 插件开入门 - Visaul Studio中添加菜单

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”,如下图:

001


(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就可以新打一个开窗口,在菜单“工具 ”中可以找到我们新的菜单如下图:

002

(5)发布成插件,我们可以直接在项目中右键,选择重新生成。然后在 bin\Debug 中我们可以直接找到VktVSIXProject.vsix,正是我们需要的文件。

最后提供示例源码下载:链接: https://pan.baidu.com/s/16zI1QFgH1ge9eTwTDfqr9Q

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:xinsiyu6@gmail.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力