Visual Studio 扩展:将元素添加到代码编辑器上下文菜单

Visual Studio Extensions: Adding element to the Code Editor ContextMenu

我正在尝试向 Visual Studio 2017 上下文菜单添加新元素。我设法使用以下代码向“工具”菜单添加一个元素:

<Button guid="guidRandomCommandPackageCmdSet" id="RandomCommandId" priority="0x0100" type="Button">
    <Parent guid="guidSHLMainMenu" id="IDG_VS_TOOLS_EXT_TOOLS" />
    <Icon guid="exclamationIcon" id="exclamationIcon1" />
    <Strings>
      <ButtonText>Random Text</ButtonText>
    </Strings>
  </Button>

注册于

<GuidSymbol name="guidRandomCommandPackageCmdSet" value="{47122772-c66f-48f3-b10b-dbbb66da120d}">
     .
     .
  <IDSymbol name="RandomCommandId" value="0x0100" />
</GuidSymbol>

我试图遵循类似的方式,所以我在 Buttons 中定义了一个新的 Button:

 <Button guid="guidRandomCommandPackageCmdSet" id="ToDoList" priority="0x0100" type="Button">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
    <Icon guid="exclamationIcon" id="exclamationIcon1" />
    <Strings>
      <ButtonText>Add TODO list</ButtonText>
    </Strings>
  </Button>with the ID symbol

使用GuidSymbols中注册的ID

  <IDSymbol name="ToDoList" value="0x106" />

但是当我 运行 项目时,该按钮没有出现在上下文菜单中。我尝试遵循 VSIX: Adding a Menu Item to the Visual Studio Editor Context Menu 的建议,但 none 的建议似乎对我有用。 我以前从未尝试过创建 VS 附加组件,所以我欢迎任何建议。 VS 2017 中的方法是否有可能发生变化?

最终,我设法让它工作了。似乎对于显示为单独菜单或属于 TOOLS 等菜单的 MENU 项,仅 Button 父项设置为适当的常量菜单元素字符串就足够了 GUIDs and IDs of Visual Studio Menus.

然而,对于 ContextMenu 元素,我需要在 Groups 中有一个元素:

<Group guid="guidRandomCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN" />
  </Group>

这有 ContextMenu 作为它的 Parent。然后,我创建了一个 CustomCommand,用它自动生成一个 Button,我修改了这个 Button 以将 Group 元素作为它的 Parent: ` 添加 TODO 列表

这是将添加的按钮悬停在上方的结果: