У меня уже есть созданный мной пакет, и я хочу добавить меню в контекстное меню Code Window
.
После небольшого поиска я нашел несколько статей, объясняющих, как это сделать. Проблема в том, что я не могу заставить его работать....
Вот мои объявления в файле 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>
и символы:
<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>
и вот как я добавляю свое меню в свой класс 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);
Что я здесь делаю неправильно? Я должен что-то упустить, потому что почти каждый образец (и ТАКОЙ ответ на эту тему) предлагает добавить меню таким образом в пакет.....
Что я пробовал:
- сначала создайте группу, затем добавьте мое меню в эту группу: не сработало
- проверьте, использую ли я правильный GUID (с помощью этот трюк)
- используйте
IDG_VS_MENU_CONTEXTMENUS
вместоIDM_VS_CTXT_CODEWIN
(после просмотра этого сообщения: Как с помощью vsx создать подменю с командами?) - дайте тот же родитель, что и меню, которое на самом деле работает, во второе меню, которое все еще не отображается....
- много безуспешных гуглений о моей проблеме...
Также, как вы можете видеть, я использую событие BeforeQueryStatus
, но оно никогда не срабатывает...