2013-05-30 10 views
9

すでに作成したパッケージがありますので、Code Windowコンテキストメニューにメニューを追加したいと思います。私のvspackageのコンテキストメニューが表示されないのはなぜですか?

少しの検索の後、私はそれを行う方法を説明するいくつかの記事を見つけました。

<Button guid="guidDALGeneratorPkgCmdSet" id="cmdidDataFlow" priority="0x0100" type="Button"> 
    <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/> 
    <CommandFlag>DynamicVisibility</CommandFlag> 
    <Strings> 
     <CommandName>cmdidDataFlow</CommandName> 
     <ButtonText>Show data flow</ButtonText> 
    </Strings> 
    </Button> 

と記号::

<GuidSymbol name="guidDALGeneratorPkgCmdSet" value="{d3269a87-a721-49a5-800b-0464fbdfd313}"> 

    <IDSymbol name="MyMenuGroup" value="0x1020" /> 
    <IDSymbol name="cmdidDALGenerator" value="0x0101" /> 
    <IDSymbol name="cmdidDataFlow" value="0x0102" /> 
</GuidSymbol> 

、ここではどのようにある問題はここ

vsctファイルの私の宣言です....私はそれが仕事を得ることはできませんPackageクラスにメニューを追加します:

私はここで間違っていますか?

  • は、最初のグループを作る:ほぼすべてのサンプルは、(およびSO被写体に答える)パッケージにそのようにメニューを追加することを提案ので、私は、私が試してみました何.....

    を何かを欠場しなければなりませんそのグループに私のメニューを追加します。私は(this trickで)右のGUIDを使用している場合

  • チェックを動作しませんでした
  • 使用IDG_VS_MENU_CONTEXTMENUSの代わりに、IDM_VS_CTXT_CODEWIN(この記事を見た後:Using vsx how do you create a sub menu with commands?
  • 同じを与えます親は私として実際には2番目のメニューに働くNU、まだ表示されない....
  • 私の問題についてグーグルで失敗した多くの...

また、あなたは私がBeforeQueryStatusイベントを使用見ることができるように、それは決して解雇される...

+0

あなたは今まであなたの問題の解決策を見つけ出すことができました。私は同じ問題に直面しています –

+1

私は申し訳ありません、私はしなかった...それは私が必要なものを達成するために別の方法を見つけたので、大きなプロジェクトの一部でした。 @Marcelが提案したものを試しましたか? – ppetrov

+0

はい、コンテキストメニューのメニューではなく、コンテキストメニューにボタンを作成します。それは役に立ちませんでした。私の要件は、コンテキストメニューでメニューを作成することです。 –

答えて

3

私の場合、上記の定数が働いた。 Visual Studio 2013でVSPackageの標準テンプレートを使い始めた後、親IDをIDM_VS_CTXT_CODEWINに変更しました。

は、ここで私が今持っているものです。

VSCT:

<Button guid="guidCopyForReviewVSPackageCmdSet" id="cmdidCopyForReview" priority="0x0100" type="Button"> 
    <Parent guid="guidCopyForReviewVSPackageCmdSet" id="MyMenuGroup" /> 
    <Icon guid="guidImages" id="bmpPicSearch" /> 
    <Strings> 
     <ButtonText>Copy for review (foswiki)</ButtonText> 
    </Strings> 
    </Button> 

シンボル:

<!-- This is the guid used to group the menu commands together --> 
<GuidSymbol name="guidCopyForReviewVSPackageCmdSet" value="{4ae6ff5a-6e7e-48bd-86b0-37fd9ab20629}"> 

    <IDSymbol name="MyMenuGroup" value="0x1020" /> 
    <IDSymbol name="cmdidCopyForReview" value="0x0100" /> 
</GuidSymbol> 


<GuidSymbol name="guidImages" value="{3eb1aa0b-96aa-4364-a870-ca588a9491b5}" > 
    <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" /> 
    <IDSymbol name="bmpPicStrikethrough" value="6" /> 
</GuidSymbol> 

がパッケージのクラスにメニュー項目を追加:

  // Create the command for the menu item. 
      CommandID menuCommandID = new CommandID(GuidList.guidCopyForReviewVSPackageCmdSet, (int)PkgCmdIDList.cmdidCopyForReview); 
      MenuCommand menuItem = new MenuCommand(MenuItemCallback, menuCommandID); 
      mcs.AddCommand(menuItem); 

をしかし、これは唯一の「本物」のコードウィンドウではなく、例えば、ASPX/ascxファイルエディタでメニューを表示します。

+0

あなたの答えをありがとう!私が間違っていた何か他のものがあったに違いないが、私は今このプロジェクトに取り組んでいないので、後でその方法をチェックする。 – ppetrov

5

コンテキストメニューが表示されるためには、コンテキストメニューを追加する必要があります。このための構文では、数日間試行錯誤して決定しました。ASPX/ASCXエディタはこのコードを使用するために

<Commands package="guidVSPackage2Pkg"> 
    <Groups> 
     <Group guid="guidVSPackage2CmdSet" id="MyMenuGroup" priority="0x0600"> 
     <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/> 
     </Group> 

    <Group guid="guidVSPackage2CmdSet" id="SubMenuGroup" priority="0x0602"> 
     <Parent guid="guidVSPackage2CmdSet" id="SubMenu" /> 
     </Group> 
    </Groups> 

    <Menus> 
     <Menu guid="guidVSPackage2CmdSet" id="SubMenu" priority="0x0200" type="Menu"> 
     <Parent guid="guidVSPackage2CmdSet" id="MyMenuGroup" /> 
     <Strings> 
      <ButtonText>Test Context Menu</ButtonText> 
     </Strings> 
     </Menu> 
    </Menus> 

    <Buttons> 
     <Button guid="guidVSPackage2CmdSet" id="cmdidMyCommand" priority="0x0100" type="Button"> 
     <Parent guid="guidVSPackage2CmdSet" id="SubMenuGroup" /> 
     <Icon guid="guidImages" id="bmpPic1" /> 
     <Strings> 
      <ButtonText>Context Menu Button</ButtonText> 
     </Strings> 
     </Button> 
     </Buttons> 

    <Bitmaps> 
     <Bitmap guid="guidImages" href="Resources\Images.png" usedList="bmpPic1, bmpPic2, bmpPicSearch, bmpPicX, bmpPicArrows"/> 
    </Bitmaps> 
    </Commands> 
    <Symbols> 
    <!-- This is the package guid. --> 
    <GuidSymbol name="guidVSPackage2Pkg" value="{1fde2aca-f1c8-4fbc-abd1-58861d8b9520}" /> 

    <!-- This is the guid used to group the menu commands together --> 
    <GuidSymbol name="guidVSPackage2CmdSet" value="{9cfc9dda-a054-4ff2-8c85-e6d2bff04874}"> 
     <IDSymbol name="SubMenu" value="0x1001"/> 
     <IDSymbol name="SubMenuGroup" value="0x1000"/> 
     <IDSymbol name="MyMenuGroup" value="0x1020" /> 
     <IDSymbol name="cmdidMyCommand" value="0x0100" /> 
    </GuidSymbol> 

    <GuidSymbol name="guidImages" value="{b77d6bb1-566b-4ecb-a99f-9f99325ffd65}" > 
     <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" /> 
     <IDSymbol name="bmpPicStrikethrough" value="6" /> 
    </GuidSymbol> 
    </Symbols> 
0

私は新しいVSPackage拡張プロジェクトは、その後、次のように私のVSTSは、上図のコンテキストメニューを作成するために、ファイルの更新に作成

enter image description here

コンテキストメニューのシンボルを追加する:

<GuidSymbol name="ASPXContext" value="{D7E8C5E1-BDB8-11D0-9C88-0000F8040A53}"> 
    <IDSymbol name="menu" value="0x0035"/> 
</GuidSymbol> 

は、コンテキストメニューを追加するには、次の

<Group guid="CmdSet" id="contextMenuGroup" priority="0x0100"> 
    <Parent guid="ASPXContext" id="menu" /> 
</Group> 

さらに詳しい情報:https://stackoverflow.com/a/31769170/2235860

関連する問題