2011-04-21 71 views
4

我已發佈名爲Duplicate Selection的Visual Studio 2010擴展,主要通過熱鍵調用。不過,它也在編輯菜單下有一個菜單項。這一切工作正常,但我想改變菜單項的圖標。菜單項的圖標應該在.vsct文件中定義:如何更改Visual Studio擴展中的菜單命令的圖標?

<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> 

你可以看到我已經註釋掉舊的定義,我不再想要使用,並添加我自己的。在頂部附近,我有<Icon guid="guidCmdIcon" id="bmpCmdIcon" />,它應該引用我的新位圖。當我在調試器下運行項目時,VS實驗實例仍在使用舊圖標!這是VS中的錯誤嗎?該圖標甚至沒有再被定義在我的vsct文件中。它仍然如何使用它?我在這裏做錯了什麼?

任何建議或猜測將被apprciated。我嘗試了幾種不同的東西,但我正式陷入了這一場。

+0

你爲什麼要改變圖標?這似乎比它的價值更加麻煩 – 2011-04-22 02:42:51

+0

+1有助於添加自定義菜單圖標 – 2013-12-06 00:46:32

回答

4

Visual Studio爲菜單數據構建私有緩存,以便它不必加載不必要地提供資源的DLL。刪除這個(隱藏)文件,請再次嘗試調試:

%LOCALAPPDATA%\微軟\ VisualStudio的\ 10.0Exp \ 1033 \ devenv.CTM

This article描述菜單的情況下,更詳細地合併過程你很好奇。

+0

謝謝,我刪除該文件後開始使用我的新圖標。我認爲這意味着即使我發佈了對我的擴展的更新,現有用戶仍然會看到舊圖標。我猜想沒什麼大不了的 – 2011-04-22 20:40:08

相關問題