对vs2010的插件扩展(package)(一)------vsct文件的编写

这篇具有很好参考价值的文章主要介绍了对vs2010的插件扩展(package)(一)------vsct文件的编写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

VS2010插件扩展

   很久没更新博客了,最近比较忙(忙着开题,又想赚点实习经验,找了个公司实习,导师又太push,贼烦,强烈建议同学们选导师要擦亮眼睛啊啊啊啊啊!!!!)。
   
   在实习的时候,遇到一个功能就是把做的程序扩展成vs2010的一个插件,我负责的是在解决方案和项目右键打开相应功能。
   首先,我选用的是c#,建立的Visual Studio package的方案进行插件扩展,经过调研发现在vs2015版本之后使用的都是Vsix项目进行扩展。这边做一个记录。

(话不多说上图)

1.新建package项目

对vs2010的插件扩展(package)(一)------vsct文件的编写
一步一步按照向导来
对vs2010的插件扩展(package)(一)------vsct文件的编写
对vs2010的插件扩展(package)(一)------vsct文件的编写
这里可以加一些插件描述信息,具体看个人情况。
对vs2010的插件扩展(package)(一)------vsct文件的编写
这边就是选择你需要把插件扩展到哪边?是导航栏上还是右键菜单栏目上。
对vs2010的插件扩展(package)(一)------vsct文件的编写
因为做一个简单记录我全都按照next了。
对vs2010的插件扩展(package)(一)------vsct文件的编写
这是我的创建完成的项目树
对vs2010的插件扩展(package)(一)------vsct文件的编写
首先给大家看一下完成的简单功能的项目树,大家可以对比一下。
对vs2010的插件扩展(package)(一)------vsct文件的编写
2.vsct文件
Windows vsct官方链接基础好的同学可以直接去这个链接查看。

这边我只贴一些关键改动代码,可以对照改动这些,就可以实现在菜单栏的右键添加。

 <Groups>
       
      //这边我放了三个参数,填到id处就可以实现不同的位置
      <!--IDM_VS_CTXT_SOLNNODE 解决方案右键
      IDM_VS_CTXT_PROJNODE    项目右键
      IDM_VS_CTXT_ITEMNODE    项目中的文件右键
      -->
      <Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x1020">
        <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
      </Group>

      <Group guid="guidVSPackage1CmdSetSolution" id="MyMenuGroup" priority="0x1030">
        <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_SOLNNODE"/>
      </Group>

  </Groups>
 //这边建立两个group是为了命令分离,实现一个在菜单栏上右键,一个在项目上右键

插一句这边group,如果刚创建完成,只会有一个group组织,如果想生成多个group需要调用vs本身的工具->创建GUID,或者使用c#代码生成,这些后面会讲如何绑定。
group里的参数guid由系统生成代表命令集的标识,意思就是你多个命令可以放在一个group里,group就是一个parent节点。
id代表group本身,需要下面注册,我会按顺序一部分一部分贴出来。
Parent guid:这个group的父节点,group是在什么之下,这边"guidSHLMainMenu"代表vs的主窗体(具体我也理解的不透彻)
id呢就是我上面说的可以用来调整放在vs的哪边。

 <!--Menus section.-->
    <!--<Menus>
      <Menu guid ="guidVSPackage1CmdSet" id="TopLevelMenu" priority="0x1021" type="Menu">
        <Parent guid="guidVSPackage1CmdSet" id="MyMenuGroup"/>
        <Strings>
          <ButtonText>visual develop</ButtonText>
          <CommandName>xxxx开发</CommandName>
        </Strings>
      </Menu>
    </Menus>-->

如果同学们需要将命令都放在菜单里,这边可以添加Menus标签,本身vsct文件就是类似html文件一样,一级标签一级标签的,只要注意同属一个group就行。

接下来到重点了,

 <Buttons>   
      <Button guid="guidVSPackage1CmdSetSolution" id="Btn_CreatNewPlugin" priority="0x1031" type="Button">
        <Parent guid="guidVSPackage1CmdSetSolution" id="MyMenuGroup" />
        <Icon guid="guidImage_ADD" id="bmpPicAdd" />
        <Strings>          
          <CommandName>cmdCreatNewPlugin</CommandName>
          <ButtonText>新建插件</ButtonText>
        </Strings>
      </Button>
      <Button guid="guidVSPackage1CmdSetSolution" id="Btn_CreatNewShare" priority="0x1032" type="Button">
        <Parent guid="guidVSPackage1CmdSetSolution" id="MyMenuGroup" />
        <Icon guid="guidImage_ADD" id="bmpPicAdd" />
        <Strings>
          <CommandName>cmdCreatNewShare</CommandName>
          <ButtonText>打开xx项目</ButtonText>
        </Strings>
      </Button>     
      <Button guid="guidVSPackage1CmdSet" id="Btn_Tool" priority="0x1032" type="Button">
        <Parent guid="guidVSPackage1CmdSet" id="MyMenuGroup" />
        <Icon guid="guidImage_TOOL" id="bmpPicTool" />
        <Strings>
          <CommandName>cmdImport</CommandName>
          <ButtonText>导入插件</ButtonText>
        </Strings>
      </Button>

    <Button guid="guidVSPackage1CmdSetSolution" id="Btn_Creat" priority="0x1033" type="Button">
      <Parent guid="guidVSPackage1CmdSetSolution" id="MyMenuGroup" />
      <Icon guid="guidImage_ADD" id="bmpPicTool" />
      <Strings> 
        <CommandName>cmdICreatShareProj</CommandName>
        <ButtonText>新建xx项目</ButtonText>
      </Strings>
    </Button>
</Buttons>

上面关于button的编码不难,仔细分析一下button的"guid"决定,这个button对应的功能属于哪一个group,就是上述的group分离,"id"同样下面注册,"priority"这个属性决定站位,"type"决定类型。
parent同样如此,"Icon guid"与"id"用来给button添加icon。
"CommandName"需要在PkgCmdID.cs文件中进行注册

icon图标设置,在resource文件添加相应图片

 <!--The bitmaps section is used to define the bitmaps that are used for the commands.-->
    <Bitmaps>
      <!--  The bitmap id is defined in a way that is a little bit different from the others: 
            the declaration starts with a guid for the bitmap strip, then there is the resource id of the 
            bitmap strip containing the bitmaps and then there are the numeric ids of the elements used 
            inside a button definition. An important aspect of this declaration is that the element id 
            must be the actual index (1-based) of the bitmap inside the bitmap strip. -->
      <Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>
      <Bitmap guid="guidImage_ADD" href="Resources\001_06.bmp" usedList="bmpPicAdd"/>
      <Bitmap guid="guidImage_TOOL" href="Resources\001_20.bmp" usedList="bmpPicTool"/>

</Bitmaps>

  <Symbols>
    <!-- This is the package guid. -->
    <GuidSymbol name="guidVSPackage1Pkg" value="{1e66f76a-9c52-4b2f-b296-82ee78664627}" />
    <GuidSymbol name="guidVSPackage1CmdSetSolution" value="{DDACFD9A-FAEE-40D7-A67F-DEC8CF5FC82D}">
      <IDSymbol name="MyMenuGroup" value="0x1020" />
      <IDSymbol name="Btn_Creat" value="0x1033"/>
      <IDSymbol name="Btn_CreatNewPlugin" value="0x1034"/>
      <IDSymbol name="Btn_CreatNewShare" value="0x1035"/>    
    </GuidSymbol>
    <!-- This is the guid used to group the menu commands together -->
    <GuidSymbol name="guidVSPackage1CmdSet" value="{6e996a39-e62f-4aa6-b97a-4ec4e90d2cb5}">
      <IDSymbol name="MyMenuGroup" value="0x1020" />
      <IDSymbol name="TopLevelMenu" value="0x1021" />
      <IDSymbol name="TopLevelMenu" value="0x1021" />
      <IDSymbol name="SecLevelGroup" value="0x1030" />
      <IDSymbol name="Btn_Import" value="0x1031" />
      <IDSymbol name="Btn_Tool" value="0x1032" />
      <IDSymbol name="Btn_Creat" value="0x1033"/>
    </GuidSymbol>
    <GuidSymbol name="guidImages" value="{54ee6595-c881-4d71-a9bd-b27f8bb6a727}" >
      <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" />
    </GuidSymbol>
    <GuidSymbol name="guidImage_ADD" value="{54ee6595-c881-4d71-a9bd-b27f8bb6a728}" >
      <IDSymbol name="bmpPicAdd" value="1" />
    </GuidSymbol>
    <GuidSymbol name="guidImage_TOOL" value="{54ee6595-c881-4d71-a9bd-b27f8bb6a729}" >
      <IDSymbol name="bmpPicTool" value="1" />
    </GuidSymbol> 
</Symbols>

Symbols元素定义其他 VSCT 元素使用的 GUID 和 ID详情参考官方文档

PkgCmdID.cs
// PkgCmdID.cs
// MUST match PkgCmdID.h
using System;
namespace rptc.VSPackage1
{
    static class PkgCmdIDList
    {
        public const uint cmdImport = 0x1031;
        public const uint cmdTool = 0x1032;
        public const uint cmdCreat= 0x1033;
        public const uint cmdCreatNewPlugin = 0x1034;
        public const uint cmdCreatNewShare = 0x1035;
        public const uint cmdICreatShareProj = 0x1036; 
    };
}
Guids.cs
// Guids.cs
// MUST match guids.h
using System;

namespace rptc.VSPackage1
{
    static class GuidList
    {
        //第一个字符串guidEmptyPackagePkgString是我们Package的GUID
        public const string guidVSPackage1PkgString = "1e66f76a-9c52-4b2f-b296-82ee78664627";

        //Package的命令集的标识
        public const string guidVSPackage1CmdSetString = "6e996a39-e62f-4aa6-b97a-4ec4e90d2cb5";

        //关于solution的guid
        public const string guidVSPackage1CmdSetStringSolution = "DDACFD9A-FAEE-40D7-A67F-DEC8CF5FC82D";



        public static readonly Guid guidVSPackage1CmdSet = new Guid(guidVSPackage1CmdSetString);
        public static readonly Guid guidVSPackage1CmdSetSolution = new Guid(guidVSPackage1CmdSetStringSolution);
    };
}

这边最重要的就是新的guid的生成,可以调用vs工具->guid生成。

综上所述,给了我的项目的vsct如何生成和其他文件如何进行绑定可用的,只要对照着改,就可以看出实现效果,具体的功能如何实现的在下一章讲解。(ps:我本人也是对着官网琢磨的,有不对处欢迎指正)文章来源地址https://www.toymoban.com/news/detail-464028.html

到了这里,关于对vs2010的插件扩展(package)(一)------vsct文件的编写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS code中 扩展插件安装 提示:Error while fetching extensions : XHR failed

    VSCode安装插件时,报了这么一个错:Error while fetching extensions : XHR failed 大多帖子都是让改网络配置的代理。 打开关闭都没用 . 找到这个路径的 hosts文件,用文本工具打开 C:WindowsSystem32driversetc 如果保存不了 右键 文件属性,查看是否只读,或者安全选项中 勾选读写权限后

    2024年02月08日
    浏览(68)
  • VS Code的神级插件Bito - GPT-4 和 ChatGPT 编写代码、解释代码、创建测试

    Bito是一款插件,它目前支持VS Code、Chrome插件,以及Jetbrains的全系列IDE,例如,IDEA、PyCharm、Clion等,可以说能够覆盖大部分开发同学了。 Bito 通过将 **GPT-4 和 ChatGPT 引入你的 IDE 和 CLI,**帮助开发人员显着加快他们的影响力。 它使用 OpenAI 的模型,但你不必拥有 OpenAI 密钥。俗

    2024年02月05日
    浏览(41)
  • VS010问题汇总(未能正确加载包)( 运行时提示无法启动程序 系统找不到指定的文件问题)(不能自动生成)(vs2010缺少或未指定语言特性)(没有为此解决方案配置选中要生成的项目)

    解决方法:http://t.csdn.cn/BKFoY(参考解决方法)  我的这个问题是参考这个回答中的第二个方法解决的,真的很靠谱,博主昨天被这个问题,重装了VS2010很多次,结果无法解决,是看了文中的方法才得以解决的 解决方法:我的解决方法:是没有生成解决方案,所以需要自己先

    2024年02月04日
    浏览(53)
  • vs2010旗舰版安装教程

    一、安装包链接 通过百度网盘分享的文件:VS2010 链接:https://pan.baidu.com/s/1vJWIRdJMqE7TgfBYGRrERQ 提取码:13tt 复制这段内容打开「百度网盘APP 即可获取」 (安装前请关闭电脑防火墙,杀毒软件) 1、解压VisualStudio2010安装包(没有解压缩软件的推荐用7-Zip) 2.找到 setup 文件,选择s

    2024年02月08日
    浏览(32)
  • VS2010命令行编译MFC

    运行cl,提示找不到mspdb.dll,如下图 找到mspdb100.dll的位置,拷贝到cl.exe同目录下,即 E:Program FilesVS2010VCbin 再次执行cl问题解决。 编译时要用到 链接时要用到 编译上面的MFC程序 执行命令 cl /c /D;_MBCS /EHsc MFC.cpp /c 只编译,不链接 D字符集 /EHsc捕获异常 Debug定义宏:_DEBUG Releas

    2024年02月05日
    浏览(34)
  • VS2008 VS2010 VS2015 VS2019不同版本的.sln 和 .csproj的区别

    1、 VS2008 .sln 文件 .csproj 文件 2、VS2010 .sln 文件 .csproj 文件 3、VS2015 .sln 文件 .csproj 文件 4、VS2019 .sln 文件 .csproj 文件

    2024年02月13日
    浏览(41)
  • VS2022 和 VS2010 C#控制台输出 Hello World

    最后,一定将【 ✔ 】将解决方案和项目放在同一个目录中(D)的对勾点上,如上图。这个小习惯,对于以后程序的维护有好处。 Console.WriteLine(\\\"Hello World\\\");   代码输入完成以后,可以通过以下3种方法来运行。 1 、在菜单栏上选择 “ 调试 ”-“ 开始执行(不调试) ” 命令。

    2024年02月06日
    浏览(47)
  • VS 2010编译Wireshark1.10.14

    说明 1. 为确保编译成功,最好让路径,目录名称,程序版本跟文中一样。 2. 选择 较低的1.10.14版来编译的原因是本版不需安装QT。 3. 选择VS2010来编译的原因是,官方的发行版也是用VS2010来编译的,为确保成功编译,选择与官方保持一致。 1.编译环境    1.1 Windows 7 Ultimate,

    2024年02月11日
    浏览(32)
  • VS2010 及以上版本如何设置 Fixedsys 字体?

    工作中需要使用 Visual Studio 2010(或以上版本) 的朋友,可能发现如果想设置以往版本中经典的 Fixedsys 字体(等宽字体),已经不能在字体设置中找到了,那么怎么才能让怀旧或习惯偏好的用户设置 Fixedsys 字体呢? 方法/步骤 在百度中搜索:fixedsys excelsior(fixedsys 字体的 T

    2024年02月12日
    浏览(60)
  • 使用Visual C++ 2010编写运行第一个C++程序

    本文主要介绍Visualc++ 2010学习版的操作界面,创建一个Win32控制台项目,编写并运行自己的第一个C++程序。主要包括以下几个方面: Visual C++ 2010概述 Visual C++ 2010下载安装 Visual C++ 2010操作界面 创建Win32控制台项目 编写C++程序 运行程序 本文使用的软件版本: Windows 10 Visual C++

    2024年02月05日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包