4

主にホットキーを介して呼び出される重複選択と呼ばれる Visual Studio 2010 拡張機能を公開しました。ただし、[編集] メニューの下にもメニュー項目があります。これで問題なく動作しますが、メニュー項目のアイコンを変更したいと思います。メニュー項目のアイコンは、.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>

もう使用したくない古い定義をコメントアウトし、独自の定義を追加したことがわかります。上部近くに があり<Icon guid="guidCmdIcon" id="bmpCmdIcon" />、新しいビットマップを参照する必要があります。デバッガーでプロジェクトを実行すると、VS 実験インスタンスはまだ古いアイコンを使用しています! これはVSのバグですか?? そのアイコンは、vsct ファイルでも定義されていません。どうしてまだそれを使っているのでしょうか? ここで何か間違ったことをしましたか?

提案や推測は歓迎します。私はいくつかの異なることを試しましたが、公式にはこれに困惑しています。

4

1 に答える 1

4

Visual Studio は、リソースを不必要に提供する DLL をロードする必要がないように、メニュー データ用のプライベート キャッシュを構築します。この (隠し) ファイルを削除して、もう一度デバッグしてみてください。

%LocalAppData%\Microsoft\VisualStudio\10.0Exp\1033\devenv.CTM

この記事では、興味がある場合に備えて、メニューのマージ プロセスについて詳しく説明します。

于 2011-04-22T03:55:35.367 に答える