Visual Studio 扩展编程中 .vsct 文件中的 GUID 和 ID 有什么区别?

Shr*_*axi 5 c# visual-studio-extensions visual-studio-2013 visual-studio-2015

例如考虑以下代码:

<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>
Run Code Online (Sandbox Code Playgroud)

这里,为什么我们需要同时定义 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>
Run Code Online (Sandbox Code Playgroud)

我知道按钮的 ID 名为“cmdidSecondCommand”,但是按钮的 GUID 将在哪里使用?我们已经在下一个元素中定义了按钮的父容器。

Mat*_*tze 5

AGUID顾名思义就是一个全局唯一标识符,形式为{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}。AnID是一个键(或标识符);它像常量一样使用,允许为数值提供描述性名称。

由于 an 后面的值在ID所有命令集(或图像条)中不是唯一的,因此GUID用于将它们置于上下文中……guid 和数值的组合用于唯一标识组、菜单、工具栏、按钮,图像等...

在给定的例子MyMenuGroup,并IDM_VS_MENU_TOOLS可能具有相同的mumeric价值,但的GUID guidSecondCommandCmdSet,并guidSHLMainMenu把它们放到背景下...

<Group guid="guidSecondCommandCmdSet" id="MyMenuGroup" priority="0x0600">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
Run Code Online (Sandbox Code Playgroud)

你需要GUIDID当你想注册Execute-和QueryStatus处理程序在你的代码,设置一个按钮的图标所控制,集元素融入关系; 例如将组添加到工具栏或菜单等...