zoukankan      html  css  js  c++  java
  • VSIX 插件右键菜单

    vs2017 插件开发

    环境

    WIN10 VS2017 CMMT VSIX

    参考资源:

    vs菜单命令ID速查 https://docs.microsoft.com/zh-cn/visualstudio/extensibility/internals/guids-and-ids-of-visual-studio-menus

    需要输出信息到窗口 https://docs.microsoft.com/zh-cn/visualstudio/extensibility/extending-the-output-window

    命令快捷键 https://docs.microsoft.com/zh-cn/visualstudio/extensibility/binding-keyboard-shortcuts-to-menu-items

    目标

    文件发布,实现右击一个文件,复制到指定目录中.

    建立VSIX项目,添加自定义命令项

     

    .vsct

    VSIX项目建好后,会有这个XML文件,记录自定义命令的相关属性,例如命令名字,图标,摆放位置

    关键节点:

    0.项目相关符号定义节

    <GuidSymbol name="guidPublishFilePackage" value="{936ecd2c-2941-43e8-afff-71bd15417822}" />

    项目建立后,有一个和项目名对应的CS文件,其中常量PackageGuidString值与此节的value值对应

    1.符号定义节

    <GuidSymbol name="guidPublishFilePackageCmdSetFILE" value="{14c506cb-99dc-4922-addf-3cefe8fbbc64}">
      <IDSymbol name="MyMenuGroupFile" value="0x0100" />
      <IDSymbol name="PublishFileId" value="0x0101" />
    </GuidSymbol>

    一个GuidSymbol节,会对应一个命令类.(每添加一个自定义命令时,就会增加一个命令类,并且此处会增加节点)

    GuidSymbol节定义命令guid属性,name定义guid属性名,value定义其值,该值对应命令类的成员-常量值CommandSet

    IDSymbol用于定义命令的id属性.有两个,一个用于命令,一个用于命令所在的命令组

    Id属性名(name)和值(value).会用于Group Button KeyBinding节点的对应属性

    其中,用于Button节点的value值,一定要对应命令类的成员-常量值CommandId,否则点击命令时无效

    2.命令组节

    <Groups>
      <Group guid="guidPublishFilePackageCmdSetFILE" id="MyMenuGroupFile" priority="0x0600">
      <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" />
      </Group>

    <Groups>

    Group节表示一个命令组,它的guid属性值,就是来源于符号节 GuidSymbol 的name的值,id属性值来源于符号节IDSymbol第1个 的name的值.   如果有多个命令组,会有多个group节

    中节点Parent的id属性的值,表示该命令组所在的位置.也就是在VS中菜单位置.

    Parent 命令ID  位置说明

    IDM_VS_CTXT_FOLDERNODE     在文件夹上点右键
    IDM_VS_CTXT_CODEWIN     代码文件,如.cs文件在编辑器中点右键
    IDM_VS_CTXT_ITEMNODE     在项目中的文件上点右键
    IDM_VS_CTXT_NOCOMMANDS     没有菜单
    IDM_VS_CTXT_PROJNODE     在项目节点上点右键
    IDM_VS_CTXT_SOLNNODE     在解决方案上点右键
     

    3.命令节

    <Buttons>

      <Button guid="guidPublishFilePackageCmdSetFILE" id="PublishFileId" priority="0x0100" type="Button">
        <Parent guid="guidPublishFilePackageCmdSetFILE" id="MyMenuGroupFile" />
      <Strings>
        <ButtonText>发布文件</ButtonText>
        </Strings>
      </Button>

    </Buttons>
    Button表示一个命令,guid属性来源于Group节的guid值,id属性来源于GuidSymbol节的第二个子节点IDSymbol 的name属性.
    Parent节表示命令所在的Group,其guid值和id值,来源于Group节的对应值.
     

    4.快捷键节

    <KeyBindings>
      <KeyBinding guid="guidPublishFilePackageCmdSetFILE" id="PublishFileId" mod1="CONTROL" mod2="CONTROL" key1="1" key2="1" editor="guidVSStd97" />
    </KeyBindings>

    设置命令的快捷键,guid,id属性值指明命令按钮.
    mod1,mod2,key1,key1的值说明快捷键使用方式是 "按下ctrl键,然后再按1,再按一下1".
    例如在VS中注释的快捷键是,CTRL+E+C.
     
    添加自定义命令
     
    在VSIX项目中添加新项,选Custom Command.
    添加后,VSCT文件和项目包.cs文件会自动增加该命令的相关节点以及初始化方法.
    命令执行逻辑代码写在该命令类的Execute方法中.
     
     
    编译与安装
     
    VSIX可以直接调试,点F5后,会打开一个模拟的VS,在这个VS中可以新建项目,文件.然后测试下自定义命令,可以断点调试.
    项目编译后会得到一个.vsix文件.可以选择release版本的这个文件,然后双击安装,VS会关闭,再打开时,插件就能用了.
    卸载插件和其它一样,点击 工具->扩展和更新 会看到这个插件,点击卸载.
     

    项目代码

    https://github.com/mirrortom/WebFilePublishVSIX

  • 相关阅读:
    [BZOJ 1907] 树的路径覆盖 【树形DP】
    [BZOJ 1221] [HNOI2001] 软件开发 【费用流 || 三分】
    SoapUI:mock service的使用
    SoapUI:使用Excel进行参数化
    SoapUI:入门实例
    loadrunner Analysis :SLA(Service Level Agreement服务水平协议)
    loadrunner controller:实时查看VUser的运行情况
    loadrunner controller:设置多个load generator
    loadrunner controller:集合点策略
    loadrunner:web services接口测试
  • 原文地址:https://www.cnblogs.com/mirrortom/p/9184518.html
Copyright © 2011-2022 走看看