1. 程式人生 > >VSIX 插件右鍵菜單

VSIX 插件右鍵菜單

strong 新建 斷點調試 groups menu 實現 成員 增加節點 idv

vs2017 插件開發

環境

WIN10 VS2017 CMMT

目標

文件發布,實現右擊一個文件,復制到指定目錄中.

建立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會關閉,再打開時,插件就能用了. 卸載插件和其它一樣,點擊 工具->擴展和更新 會看到這個插件,點擊卸載. 技術分享圖片

VSIX 插件右鍵菜單