VS 2015/2017/2019插件開發筆記

一個VSIX就是一個Package。

一個Package有一個唯一的GUID,裏面可能包含多個CommandGroup。

每一個CommandGroup  也都有GUID。

CommandGroup  又有多個Command。

每一個Command都有一個GUIID。

在集成Package那個類中,Initialize的方法裏 協商所有資源的初始化,如下。最後base.Initialize()

        protected override void Initialize()
        {
            GloalMenu.Initialize(this);
            MyToolWindowCommand.Initialize(this);
            base.Initialize();
            
        }

 

VSCT文件 大概原理:

1.我們需要在 Symbols節點下定義 所有需要的GuidSymbol ,每一個GuidSymbol 都有name,value ,並且包含所有的IDSymbol,例如下面的兩個例子

  <!--補充右鍵菜單的GUID-->
    <GuidSymbol name="guidCodeWindowRightClickCmdSet" value="{D309F791-903F-11D0-9EFC-00A0C911004F}">
      <IDSymbol name="CodeWindowRightClickMenu" value="1026" />
    </GuidSymbol>

 

 <!--定義右鍵菜單的 Command組的GUID 命令-->
    <GuidSymbol name="guidRightMenuGroup" value="{D686D350-19B7-4A94-925C-E7C17E5D9B0E}">
      <IDSymbol name="RightMenuGroup" value="0x1020" />
      <IDSymbol value="4130" name="cmdidProjectRightMenuCommand" />
    </GuidSymbol>

2.在Groups下定義Group,主要作用是Group要和Parent相關聯:

  <!--添加命令組-->
      <Group guid="guidRightMenuGroup" id="RightMenuGroup" priority="0x0600">
        <Parent guid="guidCodeWindowRightClickCmdSet" id="CodeWindowRightClickMenu" />
      </Group>
      

最後添加Button

<Button guid="guidRightMenuGroup" id="cmdidProjectRightMenuCommand" priority="0x0100" type="Button">
        <Parent guid="guidRightMenuGroup" id="RightMenuGroup" />
        <Icon guid="guidImages2" id="bmpPic1" />
        <Strings>
          <ButtonText>Invoke ProjectRightMenuCommand</ButtonText>
        </Strings>
      </Button>

這段定義一個button,這個button所在的CommandGroup 和用的是哪個Command,在哪裏顯示呢?就是Parent的值就是在哪裏顯示,這裏是引用的guidRightMenuGroup 組的RightMenuGroup

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章