VSIX 插件右鍵菜單
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定義其值,該值對應命令類
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" />
<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>
4.快捷鍵節
<KeyBindings>
<KeyBinding guid="guidPublishFilePackageCmdSetFILE" id="PublishFileId" mod1="CONTROL" mod2="CONTROL" key1="1" key2="1" editor="guidVSStd97" />
</KeyBindings>
VSIX 插件右鍵菜單