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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM