一個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