VSCT 菜单项未显示
VSCT menu items not showing
Visual Studio 2019 16.5.0 预览版 1.
我正在尝试让我的菜单项显示在一个组中或不同的菜单上。
目前,如果我将菜单项指向 IDG_VS_WNDO_OTRWNDWS1,则菜单项显示在 visual studio 的 View/Other Windows 菜单中,但如果我尝试将它们指向 MyMenuGroup ,他们只是不出现。该代码将 运行 但菜单项永远不会显示在菜单上。如果我尝试将按钮指向 IDM_VS_MENU_EXTENSIONS,它甚至不会编译,并给出以下错误:
Undefined 'Parent/@id' attribute 'IDM_VS_MENU_EXTENSIONS' in a <Button> element
下面是我的代码:
<Groups>
<Group guid="MyGroupMenuSet" id="MyMenuGroup" priority="0x0100">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" />
</Group>
</Groups>
<Buttons>
<Button guid="My_ExtVS2019PackageCmdSet" id="cmdidMyWindowCommand" priority="0x0100" type="Button">
<!-- <Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" /> -->
<Parent guid="MyGroupMenuSet" id="MyMenuGroup" />
<Strings>
<ButtonText>My Main Window</ButtonText>
</Strings>
</Button>
<Button guid="My_ExtVS2019PackageCmdSet" id="cmdidMyOtherControlCommand" priority="0x0100" type="Button">
<!--<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" />-->
<Parent guid="MyGroupMenuSet" id="MyMenuGroup" />
<Strings>
<ButtonText>My Other Window</ButtonText>
</Strings>
</Button>
</Buttons>
</Commands>
<Symbols>
<!-- This is the package guid. -->
<GuidSymbol name="My_ExtVS2019Package" value="{a28e16ed-f550-4cac-b087-f3728834a026}" />
<GuidSymbol value="{3d62bd83-4a3e-4e04-8ea8-800ea9316e90}" name="My_ExtVS2019PackageCmdSet">
<IDSymbol value="256" name="cmdidMyWindowCommand" />
<IDSymbol value="257" name="cmdidMyOtherControlCommand" />
</GuidSymbol>
<GuidSymbol value="{dd7dd38d-bf53-408e-baa4-c5c7c7774f19}" name="MyGroupMenuSet">
<IDSymbol value="4128" name="MyMenuGroup" />
<IDSymbol value="256" name="cmdidCommand1" />
</GuidSymbol>
</Symbols>
知道我的代码有什么问题吗?
Currently the menu items show up in the View/Other Windows menu on
visual studio if I point them to IDG_VS_WNDO_OTRWNDWS1.
按钮的父级应该是 group
类型。而 IDG_VS_WNDO_OTRWNDWS1
是 IDG_VS_VIEW_DEV_WINDOWS
的一个子组,所以它按我们预期的那样工作。
But if I try to point them to MyMenuGroup, they just don't appear.
MyMenuGroup
和IDG_VS_WNDO_OTRWNDWS1
也代表Group
类型。一组的父级应该是一个菜单而不是一组,否则将不起作用。看我的另一期.
所以如果你想使用你的自定义组,你应该在xx.vsct
中使用这个结构:
Button => MyMenuGroup(group) => one menu(menu) => IDG_VS_WNDO_OTRWNDWS1(group)
而不是:Button => MyMenuGroup(group) => IDG_VS_WNDO_OTRWNDWS1(group)
解决方法:
更改此部分:
<Groups>
<Group guid="MyGroupMenuSet" id="MyMenuGroup" priority="0x0100">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" />
</Group>
</Groups>
收件人:
<!--<Groups>
<Group guid="guidTestVSIXWindowPackageCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
</Group>
</Groups>-->
<Menus>
<Menu guid="guidTestVSIXWindowPackageCmdSet" id="MyMenu" priority="0x0100" type="Menu">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
<Strings>
<ButtonText>My Two Windows</ButtonText>
<CommandName>MyTwoWindows</CommandName>
</Strings>
</Menu>
</Menus>
<Groups>
<Group guid="guidTestVSIXWindowPackageCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidTestVSIXWindowPackageCmdSet" id="MyMenu"/>
</Group>
</Groups>
并且不要忘记在 GuidSymbol
中定义 MyMenu
:
<GuidSymbol value="{dd7dd38d-bf53-408e-baa4-c5c7c7774f19}" name="MyGroupMenuSet">
<IDSymbol value="4128" name="MyMenuGroup" />
<IDSymbol value="256" name="cmdidCommand1" />
<IDSymbol name="MyMenu" value="41" />
</GuidSymbol>
然后现在 VS 可以以这种方式显示你的两个 windows(View=>Other windows):
另外:关于未定义的IDM_VS_MENU_EXTENSIONS
,我已经post反馈了here。在我看来,这可能是关于文档或构建工具包的一个问题,任何对此感兴趣的人都可以跟踪该问题并在那里获取最新信息。
希望对您有所帮助:)
Visual Studio 2019 16.5.0 预览版 1.
我正在尝试让我的菜单项显示在一个组中或不同的菜单上。
目前,如果我将菜单项指向 IDG_VS_WNDO_OTRWNDWS1,则菜单项显示在 visual studio 的 View/Other Windows 菜单中,但如果我尝试将它们指向 MyMenuGroup ,他们只是不出现。该代码将 运行 但菜单项永远不会显示在菜单上。如果我尝试将按钮指向 IDM_VS_MENU_EXTENSIONS,它甚至不会编译,并给出以下错误:
Undefined 'Parent/@id' attribute 'IDM_VS_MENU_EXTENSIONS' in a <Button> element
下面是我的代码:
<Groups>
<Group guid="MyGroupMenuSet" id="MyMenuGroup" priority="0x0100">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" />
</Group>
</Groups>
<Buttons>
<Button guid="My_ExtVS2019PackageCmdSet" id="cmdidMyWindowCommand" priority="0x0100" type="Button">
<!-- <Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" /> -->
<Parent guid="MyGroupMenuSet" id="MyMenuGroup" />
<Strings>
<ButtonText>My Main Window</ButtonText>
</Strings>
</Button>
<Button guid="My_ExtVS2019PackageCmdSet" id="cmdidMyOtherControlCommand" priority="0x0100" type="Button">
<!--<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" />-->
<Parent guid="MyGroupMenuSet" id="MyMenuGroup" />
<Strings>
<ButtonText>My Other Window</ButtonText>
</Strings>
</Button>
</Buttons>
</Commands>
<Symbols>
<!-- This is the package guid. -->
<GuidSymbol name="My_ExtVS2019Package" value="{a28e16ed-f550-4cac-b087-f3728834a026}" />
<GuidSymbol value="{3d62bd83-4a3e-4e04-8ea8-800ea9316e90}" name="My_ExtVS2019PackageCmdSet">
<IDSymbol value="256" name="cmdidMyWindowCommand" />
<IDSymbol value="257" name="cmdidMyOtherControlCommand" />
</GuidSymbol>
<GuidSymbol value="{dd7dd38d-bf53-408e-baa4-c5c7c7774f19}" name="MyGroupMenuSet">
<IDSymbol value="4128" name="MyMenuGroup" />
<IDSymbol value="256" name="cmdidCommand1" />
</GuidSymbol>
</Symbols>
知道我的代码有什么问题吗?
Currently the menu items show up in the View/Other Windows menu on visual studio if I point them to IDG_VS_WNDO_OTRWNDWS1.
按钮的父级应该是 group
类型。而 IDG_VS_WNDO_OTRWNDWS1
是 IDG_VS_VIEW_DEV_WINDOWS
的一个子组,所以它按我们预期的那样工作。
But if I try to point them to MyMenuGroup, they just don't appear.
MyMenuGroup
和IDG_VS_WNDO_OTRWNDWS1
也代表Group
类型。一组的父级应该是一个菜单而不是一组,否则将不起作用。看我的另一期
所以如果你想使用你的自定义组,你应该在xx.vsct
中使用这个结构:
Button => MyMenuGroup(group) => one menu(menu) => IDG_VS_WNDO_OTRWNDWS1(group)
而不是:Button => MyMenuGroup(group) => IDG_VS_WNDO_OTRWNDWS1(group)
解决方法:
更改此部分:
<Groups>
<Group guid="MyGroupMenuSet" id="MyMenuGroup" priority="0x0100">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1" />
</Group>
</Groups>
收件人:
<!--<Groups>
<Group guid="guidTestVSIXWindowPackageCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
</Group>
</Groups>-->
<Menus>
<Menu guid="guidTestVSIXWindowPackageCmdSet" id="MyMenu" priority="0x0100" type="Menu">
<Parent guid="guidSHLMainMenu" id="IDG_VS_WNDO_OTRWNDWS1"/>
<Strings>
<ButtonText>My Two Windows</ButtonText>
<CommandName>MyTwoWindows</CommandName>
</Strings>
</Menu>
</Menus>
<Groups>
<Group guid="guidTestVSIXWindowPackageCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidTestVSIXWindowPackageCmdSet" id="MyMenu"/>
</Group>
</Groups>
并且不要忘记在 GuidSymbol
中定义 MyMenu
:
<GuidSymbol value="{dd7dd38d-bf53-408e-baa4-c5c7c7774f19}" name="MyGroupMenuSet">
<IDSymbol value="4128" name="MyMenuGroup" />
<IDSymbol value="256" name="cmdidCommand1" />
<IDSymbol name="MyMenu" value="41" />
</GuidSymbol>
然后现在 VS 可以以这种方式显示你的两个 windows(View=>Other windows):
另外:关于未定义的IDM_VS_MENU_EXTENSIONS
,我已经post反馈了here。在我看来,这可能是关于文档或构建工具包的一个问题,任何对此感兴趣的人都可以跟踪该问题并在那里获取最新信息。
希望对您有所帮助:)