2013-05-30 18 views
9

Mam już utworzony przeze mnie pakiet i chciałbym dodać menu do menu kontekstowego Code Window.Dlaczego moje menu kontekstowe vspakażu nie pokazuje

Po drobnym przeszukaniu znalazłem kilka artykułów wyjaśniających, jak to zrobić. Problem polega na tym, że nie można dostać to działa ....

Oto moje deklaracje w pliku vsct:

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

i symbole:

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

i tutaj jest jak Dodaję moje menu w mojej klasie Package:

CommandID dataFlowCID = new CommandID(GuidList.guidDALGeneratorPkgCmdSet, (int)PkgCmdIDList.cmdidDataFlow); 
OleMenuCommand dataFlowMenu = new OleMenuCommand(showDataFlow, dataFlowCID); 
dataFlowMenu.BeforeQueryStatus += new EventHandler(dataFlowMenu_BeforeQueryStatus); 
mcs.AddCommand(dataFlowMenu); 

Co ja tu robię źle? Muszę coś przeoczyć, ponieważ prawie każda próbka (a więc odpowiedzi na ten temat) sugeruje, aby dodać menu tamtędy w opakowaniu .....

Co próbowałem:

  • uczynić grupę pierwszy następnie dodać moje menu w tej grupie: nie działa
  • sprawdzić, czy mogę użyć odpowiedniego identyfikatora GUID (z this trick)
  • korzystanie IDG_VS_MENU_CONTEXTMENUS zamiast IDM_VS_CTXT_CODEWIN (po spojrzeniu na tym stanowisku: Using vsx how do you create a sub menu with commands?)
  • dać takie same rodzic jako ja nu, który faktycznie działa do drugiego menu, nadal nie pokazuje ....
  • wiele nieudanych googling temat mojego problemu ...

Także jak widać używam zdarzenie BeforeQueryStatus, ale nigdy zostaje zwolniony ...

+0

Czy byłeś kiedykolwiek w stanie zorientować się w rozwiązanie problemu. Mam ten sam problem. –

+1

Przepraszam, nie, nie ... To była mała część dużego projektu, więc odkryłem inny sposób osiągnięcia tego, czego potrzebowałem. Czy spróbowałeś tego, co zasugerował @Marcel? – ppetrov

+0

Tak, tworzy przycisk w menu kontekstowym, a nie menu w menu kontekstowym. Więc nie było pomocne. Moim wymaganiem jest utworzenie menu w menu kontekstowym. –

Odpowiedz

3

Dla mnie wspomniana stała zadziałała. Zacząłem od standardowego szablonu dla VSPackage w Visual Studio 2013, a następnie zmieniłem identyfikator rodzica na IDM_VS_CTXT_CODEWIN.

Oto co mam teraz:

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> 

symbole:

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

Dodanie menu w klasie pakietu:

  // 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); 

Jednak to tylko pokazuje menu w „prawdziwym” oknem kodu, a nie w edytorze aspx/ascx na przykład.

+0

Dzięki za odpowiedź! Musiało być coś jeszcze, co zrobiłem źle, ale nie pracuję teraz nad tym projektem, więc sprawdzę tę metodę kiedyś później. – ppetrov

5

Menu kontekstowe musi zostać dodane do grupy, która jest w menu kontekstowym, aby była wyświetlana ... Składnia tego zajęła mi kilka dni prób i błędów do ustalenia.

enter image description here

stworzyłem nowy projekt przedłużenia VSPackage następnie zaktualizowany plik w następujący sposób, aby utworzyć menu kontekstowego pokazanego powyżej moi VSTS:

<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

Dla/ASCX edytorze ASPX użyć tego kodu:

Dodawanie symbolu menu kontekstowego:

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

Dodawanie menu kontekstowego:

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

Więcej informacji na: https://stackoverflow.com/a/31769170/2235860