Visual Studio 扩展编程中 .vsct 文件中的 GUID 和 ID 有什么区别?
What is the difference between GUID and ID in a .vsct file in Visual Studio extension programming?
例如考虑以下代码:
<Group guid="guidFirstCommandCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
<Group guid="guidSecondCommandCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
这里,为什么要同时定义GUID和ID? id="IDM_VS_MENU_TOOLS" 指的是 Visual Studio 中的工具菜单。 guid="guidSHLMainMenu"有什么用?
还要考虑以下代码:
<Button guid="guidSecondCommandCmdSet" id="cmdidSecondCommand" priority="2" type="Button">
<Parent guid="guidSecondCommandCmdSet" id="MyMenuGroup"/>
<Icon guid="guidImages" id="bmpPic2"/>
<Strings>
<ButtonText>XXX Command</ButtonText>
</Strings>
</Button>
我知道该按钮的 ID 名为 "cmdidSecondCommand",但是该按钮的 GUID 将用于何处?我们已经在下一个元素中定义了按钮的父容器。
一个GUID
顾名思义就是一个globally unique identifier的形式{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
。 ID
是一个键(或标识符);它像常量一样使用,允许为数值赋予描述性名称。
由于 ID
背后的值在所有命令集(或图像条)中都不是唯一的,因此 GUID
用于将它们置于上下文中...... guid 的组合并使用数值来唯一标识组、菜单、工具栏、按钮、图像等...
在给定的示例中,MyMenuGroup
和 IDM_VS_MENU_TOOLS
可能具有相同的数字值,但是 guid guidSecondCommandCmdSet
和 guidSHLMainMenu
将它们置于上下文中...
<Group guid="guidSecondCommandCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
当您想在代码中为控件注册 Execute- 和 QueryStatus 处理程序、为按钮设置图标、将元素设置为关联时,您需要 GUID
和 ID
;例如将组添加到工具栏或菜单等...
例如考虑以下代码:
<Group guid="guidFirstCommandCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
<Group guid="guidSecondCommandCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
这里,为什么要同时定义GUID和ID? id="IDM_VS_MENU_TOOLS" 指的是 Visual Studio 中的工具菜单。 guid="guidSHLMainMenu"有什么用?
还要考虑以下代码:
<Button guid="guidSecondCommandCmdSet" id="cmdidSecondCommand" priority="2" type="Button">
<Parent guid="guidSecondCommandCmdSet" id="MyMenuGroup"/>
<Icon guid="guidImages" id="bmpPic2"/>
<Strings>
<ButtonText>XXX Command</ButtonText>
</Strings>
</Button>
我知道该按钮的 ID 名为 "cmdidSecondCommand",但是该按钮的 GUID 将用于何处?我们已经在下一个元素中定义了按钮的父容器。
一个GUID
顾名思义就是一个globally unique identifier的形式{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
。 ID
是一个键(或标识符);它像常量一样使用,允许为数值赋予描述性名称。
由于 ID
背后的值在所有命令集(或图像条)中都不是唯一的,因此 GUID
用于将它们置于上下文中...... guid 的组合并使用数值来唯一标识组、菜单、工具栏、按钮、图像等...
在给定的示例中,MyMenuGroup
和 IDM_VS_MENU_TOOLS
可能具有相同的数字值,但是 guid guidSecondCommandCmdSet
和 guidSHLMainMenu
将它们置于上下文中...
<Group guid="guidSecondCommandCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
当您想在代码中为控件注册 Execute- 和 QueryStatus 处理程序、为按钮设置图标、将元素设置为关联时,您需要 GUID
和 ID
;例如将组添加到工具栏或菜单等...