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 列表
这是将添加的按钮悬停在上方的结果:
我正在尝试向 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 列表
这是将添加的按钮悬停在上方的结果: