【问题标题】:Visual Studio Extension with custom command and subcommands带有自定义命令和子命令的 Visual Studio 扩展
【发布时间】:2018-12-27 20:15:05
【问题描述】:

我正在尝试使用 Visual Studio 2017 创建一个简单的 Visual Studio 扩展,它将命令添加到解决方案资源管理器中的项目上下文菜单。我想在一个主选项中添加我的命令,然后从该主选项中我希望我的命令可以访问,就像添加->新项目、添加->现有项目、添加->类等. 适用于项目的上下文菜单。

在阅读完文档之后,这是我迄今为止为我的 vsct 文件提出的内容:

<Commands package="guidMainItemPackage">      
  <Groups>
    <Group guid="guidMainItemPackageCmdSet" id="MyMenuGroup" priority="0x0600" />              
    <Group guid="guidMainItemPackageCmdSet" id="SubMenuGroup" priority="0x0601" />              
  </Groups>

  <Buttons>
    <Button guid="guidMainItemPackageCmdSet" id="MainItemId" priority="0x0100" type="Button">
      <Parent guid="guidMainItemPackageCmdSet" id="MyMenuGroup" />
      <Icon guid="guidImages" id="bmpPic1" />
      <Strings>
        <ButtonText>Invoke MainItem</ButtonText>
      </Strings>
    </Button>

    <Button guid="guidMainItemPackageCmdSet" id="cmdidSubItem" priority="0x0101" type="Button">
      <Parent guid="guidMainItemPackageCmdSet" id="SubMenuGroup" />
      <Icon guid="guidImages1" id="bmpPic1" />
      <Strings>
        <ButtonText>Invoke SubItem</ButtonText>
      </Strings>
    </Button>
  </Buttons>

  <Bitmaps>     
    <Bitmap guid="guidImages" href="Resources\MainItem.png" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows, bmpPicStrikethrough" />
    <Bitmap guid="guidImages1" href="Resources\SubItem.png" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows, bmpPicStrikethrough" />
  </Bitmaps>
</Commands>

<CommandPlacements>
  <CommandPlacement guid="guidMainItemPackageCmdSet" id="MyMenuGroup" priority="0xFFFF">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" />
  </CommandPlacement>    
  <CommandPlacement guid="guidMainItemPackageCmdSet" id="SubMenuGroup" priority="0xFFFE">
    <Parent guid="guidMainItemPackageCmdSet" id="MyMenuGroup" />
  </CommandPlacement>
</CommandPlacements>

<Symbols>
  <GuidSymbol name="guidMainItemPackage" value="{30f66380-eeeb-48bf-8554-0d63d87194af}" />  
  <GuidSymbol name="guidMainItemPackageCmdSet" value="{98ee7e8f-c421-4f0e-a9e9-86eab5141563}">
    <IDSymbol name="MyMenuGroup" value="0x1020" />
    <IDSymbol name="SubMenuGroup" value="0x1028" />
    <IDSymbol name="MainItemId" value="0x0100" />
    <IDSymbol value="4129" name="cmdidSubItem" />
  </GuidSymbol>
  <GuidSymbol name="guidImages" value="{b3c2dfad-df35-4e6b-880e-8018ce6c3d0f}">
    <IDSymbol name="bmpPic1" value="1" />
    <IDSymbol name="bmpPic2" value="2" />
    <IDSymbol name="bmpPicSearch" value="3" />
    <IDSymbol name="bmpPicX" value="4" />
    <IDSymbol name="bmpPicArrows" value="5" />
    <IDSymbol name="bmpPicStrikethrough" value="6" />
  </GuidSymbol> 
  <GuidSymbol value="{93d3ad22-fe33-40da-b85f-a926952e3914}" name="guidImages1">
    <IDSymbol name="bmpPic1" value="1" />
    <IDSymbol name="bmpPic2" value="2" />
    <IDSymbol name="bmpPicSearch" value="3" />
    <IDSymbol name="bmpPicX" value="4" />
    <IDSymbol name="bmpPicArrows" value="5" />
    <IDSymbol name="bmpPicStrikethrough" value="6" />
  </GuidSymbol>
</Symbols>

所以基本上我已经为我的项目添加了两个自定义命令,每个命令的按钮,每个按钮的组和每个组的命令放置(其他一切只是默认生成的 vsct 模板) .

我的问题是使用上面的代码,在第一个命令上显示并且它没有子项。实现所需布局的正确 vsct 内容是什么?

【问题讨论】:

    标签: visual-studio-extensions


    【解决方案1】:

    经过更多的尝试和错误(主要是错误),我决定通过 Visual Studio 本身的命令定义找到一组类似的命令,我终于想出了答案。以下是实现此结构所需的步骤:

    1. 创建一个组并将该组的父级设置为 Visual Studio 项目上下文菜单。
    2. 创建一个菜单,其父级是在步骤 1 中创建的组。
    3. 创建第二个组,其父级是在步骤 2 中创建的菜单。
    4. 仅为子项创建按钮。
    5. 为在第 4 步中创建的子项创建命令位置,您可以将每个按钮放置在第 3 步中创建的组中。

    【讨论】:

    • 非常感谢。你真的为我省了很多痛苦。我现在正试图解决完全相同的问题。但是为了您的解释,其他地方的信息为零。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2014-10-26
    • 2022-01-02
    相关资源
    最近更新 更多