Visual studio 2010 如何在Visual Studio Extension中更改菜单命令的图标?
我发布了一个名为Visual Studio 2010的扩展,它主要通过热键调用。但是,它在“编辑”菜单下也有一个菜单项。这一切都很好,但我想改变菜单项的图标。菜单项的图标应该在.vsct文件中定义:Visual studio 2010 如何在Visual Studio Extension中更改菜单命令的图标?,visual-studio-2010,vsx,vsix,Visual Studio 2010,Vsx,Vsix,我发布了一个名为Visual Studio 2010的扩展,它主要通过热键调用。但是,它在“编辑”菜单下也有一个菜单项。这一切都很好,但我想改变菜单项的图标。菜单项的图标应该在.vsct文件中定义: <Commands package="guidDupSelectionPkg"> <Groups> <Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600"&g
<Commands package="guidDupSelectionPkg">
<Groups>
<Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EDIT"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidDupSelectionCmdSet" id="cmdidDupSelection" priority="0x0100" type="Button">
<Parent guid="guidDupSelectionCmdSet" id="MyMenuGroup" />
<Icon guid="guidCmdIcon" id="bmpCmdIcon" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DontCache</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<CommandName>cmdidDupSelection</CommandName>
<ButtonText>Duplicate Selection</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<!--<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>-->
<Bitmap guid="guidCmdIcon" href="Resources\cmdicon.bmp" usedList="bmpCmdIcon" />
</Bitmaps>
</Commands>
<KeyBindings>
<KeyBinding guid="guidDupSelectionCmdSet" id="cmdidDupSelection" key1="D" mod1="Alt" editor="guidVSStd97"/>
</KeyBindings>
<Symbols>
<GuidSymbol name="guidDupSelectionPkg" value="{e5f7e157-f686-46b7-a588-85b08cdaa5f0}" />
<GuidSymbol name="guidDupSelectionCmdSet" value="{85dcd5f2-19a5-4ee2-a99b-4fac4dc5c4ca}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDupSelection" value="0x0100" />
</GuidSymbol>
<!--<GuidSymbol name="guidImages" value="{63df12b7-6bf0-4b19-843d-3ec69e08439d}">
<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" />
</GuidSymbol>-->
<GuidSymbol name="guidCmdIcon" value="{e4cc0e42-a09d-4602-a965-d2b3f7e1f496}">
<IDSymbol name="bmpCmdIcon" value="1" />
</GuidSymbol>
</Symbols>
<Commands package="guidDupSelectionPkg">
<Groups>
<Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EDIT"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidDupSelectionCmdSet" id="cmdidDupSelection" priority="0x0100" type="Button">
<Parent guid="guidDupSelectionCmdSet" id="MyMenuGroup" />
<Icon guid="guidCmdIcon" id="bmpCmdIcon" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DontCache</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<CommandName>cmdidDupSelection</CommandName>
<ButtonText>Duplicate Selection</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<!--<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>-->
<Bitmap guid="guidCmdIcon" href="Resources\cmdicon.bmp" usedList="bmpCmdIcon" />
</Bitmaps>
</Commands>
<KeyBindings>
<KeyBinding guid="guidDupSelectionCmdSet" id="cmdidDupSelection" key1="D" mod1="Alt" editor="guidVSStd97"/>
</KeyBindings>
<Symbols>
<GuidSymbol name="guidDupSelectionPkg" value="{e5f7e157-f686-46b7-a588-85b08cdaa5f0}" />
<GuidSymbol name="guidDupSelectionCmdSet" value="{85dcd5f2-19a5-4ee2-a99b-4fac4dc5c4ca}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDupSelection" value="0x0100" />
</GuidSymbol>
<!--<GuidSymbol name="guidImages" value="{63df12b7-6bf0-4b19-843d-3ec69e08439d}">
<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" />
</GuidSymbol>-->
<GuidSymbol name="guidCmdIcon" value="{e4cc0e42-a09d-4602-a965-d2b3f7e1f496}">
<IDSymbol name="bmpCmdIcon" value="1" />
</GuidSymbol>
</Symbols>
动态可视性
唐奇
默认不可见
cmdidDupSelection
重复选择
<Commands package="guidDupSelectionPkg">
<Groups>
<Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EDIT"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidDupSelectionCmdSet" id="cmdidDupSelection" priority="0x0100" type="Button">
<Parent guid="guidDupSelectionCmdSet" id="MyMenuGroup" />
<Icon guid="guidCmdIcon" id="bmpCmdIcon" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DontCache</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<CommandName>cmdidDupSelection</CommandName>
<ButtonText>Duplicate Selection</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<!--<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>-->
<Bitmap guid="guidCmdIcon" href="Resources\cmdicon.bmp" usedList="bmpCmdIcon" />
</Bitmaps>
</Commands>
<KeyBindings>
<KeyBinding guid="guidDupSelectionCmdSet" id="cmdidDupSelection" key1="D" mod1="Alt" editor="guidVSStd97"/>
</KeyBindings>
<Symbols>
<GuidSymbol name="guidDupSelectionPkg" value="{e5f7e157-f686-46b7-a588-85b08cdaa5f0}" />
<GuidSymbol name="guidDupSelectionCmdSet" value="{85dcd5f2-19a5-4ee2-a99b-4fac4dc5c4ca}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDupSelection" value="0x0100" />
</GuidSymbol>
<!--<GuidSymbol name="guidImages" value="{63df12b7-6bf0-4b19-843d-3ec69e08439d}">
<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" />
</GuidSymbol>-->
<GuidSymbol name="guidCmdIcon" value="{e4cc0e42-a09d-4602-a965-d2b3f7e1f496}">
<IDSymbol name="bmpCmdIcon" value="1" />
</GuidSymbol>
</Symbols>
你可以看到我已经注释掉了我不想再使用的旧定义,并添加了我自己的定义。在顶部附近,我有
,它应该引用我的新位图。当我在调试器下运行项目时,VS实验实例仍在使用旧图标!这是VS中的错误吗??这个图标甚至不再在我的vsct文件中定义。它怎么还能用呢?我做错什么了吗
<Commands package="guidDupSelectionPkg">
<Groups>
<Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EDIT"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidDupSelectionCmdSet" id="cmdidDupSelection" priority="0x0100" type="Button">
<Parent guid="guidDupSelectionCmdSet" id="MyMenuGroup" />
<Icon guid="guidCmdIcon" id="bmpCmdIcon" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DontCache</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<CommandName>cmdidDupSelection</CommandName>
<ButtonText>Duplicate Selection</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<!--<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>-->
<Bitmap guid="guidCmdIcon" href="Resources\cmdicon.bmp" usedList="bmpCmdIcon" />
</Bitmaps>
</Commands>
<KeyBindings>
<KeyBinding guid="guidDupSelectionCmdSet" id="cmdidDupSelection" key1="D" mod1="Alt" editor="guidVSStd97"/>
</KeyBindings>
<Symbols>
<GuidSymbol name="guidDupSelectionPkg" value="{e5f7e157-f686-46b7-a588-85b08cdaa5f0}" />
<GuidSymbol name="guidDupSelectionCmdSet" value="{85dcd5f2-19a5-4ee2-a99b-4fac4dc5c4ca}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDupSelection" value="0x0100" />
</GuidSymbol>
<!--<GuidSymbol name="guidImages" value="{63df12b7-6bf0-4b19-843d-3ec69e08439d}">
<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" />
</GuidSymbol>-->
<GuidSymbol name="guidCmdIcon" value="{e4cc0e42-a09d-4602-a965-d2b3f7e1f496}">
<IDSymbol name="bmpCmdIcon" value="1" />
</GuidSymbol>
</Symbols>
任何建议或猜测都将被告知。我尝试过几种不同的方法,但在这一点上我被官方难倒了。Visual Studio为菜单数据构建了一个私有缓存,这样它就不必加载提供不必要资源的DLL。删除此(隐藏)文件并重试调试:
<Commands package="guidDupSelectionPkg">
<Groups>
<Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EDIT"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidDupSelectionCmdSet" id="cmdidDupSelection" priority="0x0100" type="Button">
<Parent guid="guidDupSelectionCmdSet" id="MyMenuGroup" />
<Icon guid="guidCmdIcon" id="bmpCmdIcon" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DontCache</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<CommandName>cmdidDupSelection</CommandName>
<ButtonText>Duplicate Selection</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<!--<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>-->
<Bitmap guid="guidCmdIcon" href="Resources\cmdicon.bmp" usedList="bmpCmdIcon" />
</Bitmaps>
</Commands>
<KeyBindings>
<KeyBinding guid="guidDupSelectionCmdSet" id="cmdidDupSelection" key1="D" mod1="Alt" editor="guidVSStd97"/>
</KeyBindings>
<Symbols>
<GuidSymbol name="guidDupSelectionPkg" value="{e5f7e157-f686-46b7-a588-85b08cdaa5f0}" />
<GuidSymbol name="guidDupSelectionCmdSet" value="{85dcd5f2-19a5-4ee2-a99b-4fac4dc5c4ca}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDupSelection" value="0x0100" />
</GuidSymbol>
<!--<GuidSymbol name="guidImages" value="{63df12b7-6bf0-4b19-843d-3ec69e08439d}">
<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" />
</GuidSymbol>-->
<GuidSymbol name="guidCmdIcon" value="{e4cc0e42-a09d-4602-a965-d2b3f7e1f496}">
<IDSymbol name="bmpCmdIcon" value="1" />
</GuidSymbol>
</Symbols>
%LocalAppData%\Microsoft\VisualStudio\10.0Exp\1033\devenv.CTM
<Commands package="guidDupSelectionPkg">
<Groups>
<Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EDIT"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidDupSelectionCmdSet" id="cmdidDupSelection" priority="0x0100" type="Button">
<Parent guid="guidDupSelectionCmdSet" id="MyMenuGroup" />
<Icon guid="guidCmdIcon" id="bmpCmdIcon" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DontCache</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<CommandName>cmdidDupSelection</CommandName>
<ButtonText>Duplicate Selection</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<!--<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>-->
<Bitmap guid="guidCmdIcon" href="Resources\cmdicon.bmp" usedList="bmpCmdIcon" />
</Bitmaps>
</Commands>
<KeyBindings>
<KeyBinding guid="guidDupSelectionCmdSet" id="cmdidDupSelection" key1="D" mod1="Alt" editor="guidVSStd97"/>
</KeyBindings>
<Symbols>
<GuidSymbol name="guidDupSelectionPkg" value="{e5f7e157-f686-46b7-a588-85b08cdaa5f0}" />
<GuidSymbol name="guidDupSelectionCmdSet" value="{85dcd5f2-19a5-4ee2-a99b-4fac4dc5c4ca}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDupSelection" value="0x0100" />
</GuidSymbol>
<!--<GuidSymbol name="guidImages" value="{63df12b7-6bf0-4b19-843d-3ec69e08439d}">
<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" />
</GuidSymbol>-->
<GuidSymbol name="guidCmdIcon" value="{e4cc0e42-a09d-4602-a965-d2b3f7e1f496}">
<IDSymbol name="bmpCmdIcon" value="1" />
</GuidSymbol>
</Symbols>
如果您好奇,请更详细地描述菜单合并过程。为什么要更改图标?这似乎比它的价值更麻烦+1有助于添加自定义菜单图标;你为什么在这里有账户?我们感兴趣的是解决问题,而不是让问题消失。谢谢,在我删除该文件后,它开始使用我的新图标。我假设这意味着,即使我发布了扩展的更新,现有用户仍会看到旧图标。我想没什么大不了的。。。
<Commands package="guidDupSelectionPkg">
<Groups>
<Group guid="guidDupSelectionCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_EDIT"/>
</Group>
</Groups>
<Buttons>
<Button guid="guidDupSelectionCmdSet" id="cmdidDupSelection" priority="0x0100" type="Button">
<Parent guid="guidDupSelectionCmdSet" id="MyMenuGroup" />
<Icon guid="guidCmdIcon" id="bmpCmdIcon" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>DontCache</CommandFlag>
<CommandFlag>DefaultInvisible</CommandFlag>
<Strings>
<CommandName>cmdidDupSelection</CommandName>
<ButtonText>Duplicate Selection</ButtonText>
</Strings>
</Button>
</Buttons>
<Bitmaps>
<!--<Bitmap guid="guidImages" href="Resources\Images_32bit.bmp" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/>-->
<Bitmap guid="guidCmdIcon" href="Resources\cmdicon.bmp" usedList="bmpCmdIcon" />
</Bitmaps>
</Commands>
<KeyBindings>
<KeyBinding guid="guidDupSelectionCmdSet" id="cmdidDupSelection" key1="D" mod1="Alt" editor="guidVSStd97"/>
</KeyBindings>
<Symbols>
<GuidSymbol name="guidDupSelectionPkg" value="{e5f7e157-f686-46b7-a588-85b08cdaa5f0}" />
<GuidSymbol name="guidDupSelectionCmdSet" value="{85dcd5f2-19a5-4ee2-a99b-4fac4dc5c4ca}">
<IDSymbol name="MyMenuGroup" value="0x1020" />
<IDSymbol name="cmdidDupSelection" value="0x0100" />
</GuidSymbol>
<!--<GuidSymbol name="guidImages" value="{63df12b7-6bf0-4b19-843d-3ec69e08439d}">
<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" />
</GuidSymbol>-->
<GuidSymbol name="guidCmdIcon" value="{e4cc0e42-a09d-4602-a965-d2b3f7e1f496}">
<IDSymbol name="bmpCmdIcon" value="1" />
</GuidSymbol>
</Symbols>