visual-studio - 为什么我的扩展程序的菜单项没有出现?
问题描述
我正在构建我的第一个 VS 扩展,以允许用户加密/解密mailSettings/smtp
.web.config
我希望在主 VS Tools 菜单中添加一个包含 2 个子项的菜单项:
Config Encryptor
Encrypt Mail Settings
Decrypt Mail Settings
该.vsct
文件的相关(我希望)部分如下:
<Menus>
<Menu guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenu" priority="0x0100" type="Menu">
<Parent guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenuGroup" />
<Strings>
<MenuText>Config Encryptor</MenuText>
<ButtonText>Config Encryptor</ButtonText>
<CommandName>Config Encryptor</CommandName>
</Strings>
</Menu>
</Menus>
<Groups>
<Group guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenu" priority="0x0200">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />
</Group>
<Group guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenuGroup" priority="0x0100">
<Parent guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenu" />
</Group>
</Groups>
<Buttons>
<Button guid="guidEncryptConfigCommandPackageCmdSet" id="cmdidEncryptConfigCommand" priority="0x0100" type="Button">
<Parent guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenuGroup" />
<Strings>
<ButtonText>Encrypt Mail Settings</ButtonText>
</Strings>
</Button>
<Button guid="guidEncryptConfigCommandPackageCmdSet" id="cmdidDecryptConfigCommand" priority="0x0100" type="Button">
<Parent guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenuGroup" />
<Strings>
<ButtonText>Decrypt Mail Settings</ButtonText>
</Strings>
</Button>
</Buttons>
<GuidSymbol name="guidEncryptConfigCommandPackageCmdSet" value="{2c763b06-e83f-4c03-8fc6-3a00416b361e}">
<IDSymbol name="ConfigEncryptorMenu" value="0x1010" />
<IDSymbol name="ConfigEncryptorMenuGroup" value="0x1020" />
<IDSymbol name="cmdidEncryptConfigCommand" value="0x0100" />
<IDSymbol name="cmdidDecryptConfigCommand" value="0x1021" />
</GuidSymbol>
当我在新的 VS 实例中调试扩展项目时,菜单项没有出现,我做错了什么?
解决方案
有可能是因为您定义了一个menu
其 ID 为的ConfigEncryptorMenu
同时您还定义了一个group
其 ID 也为的ConfigEncryptorMenu
,这弄乱了结构。
让我们定义一个名为的新 IDSymbol GroupForSubMenu
:
<GuidSymbol name="guidEncryptConfigCommandPackageCmdSet" value="{2c763b06-e83f-4c03-8fc6-3a00416b361e}">
......
<!-- New IDSymbol -->
<IDSymbol name="GroupForSubMenu" value="0x1050" />
</GuidSymbol>
然后将第一个 Group 的内容更改为:
<Group guid="guidEncryptConfigCommandPackageCmdSet" id="GroupForSubMenu" priority="0x0200">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />
</Group>
<Parent>
并将in Menu
section的值更改为:
<Parent guid="guidEncryptConfigCommandPackageCmdSet" id="ConfigEncryptorMenuGroup" />
至 <Parent guid="guidEncryptConfigCommandPackageCmdSet" id="GroupForSubMenu" />
MenuText 不是必需的,原始父关系似乎类似于ConfigEncryptorMenuGroup's parent is ConfigEncryptorMenu
while ConfigEncryptorMenu's parent is ConfigEncryptorMenuGroup
。纠正组和菜单之间的关系,问题就可以解决了。
推荐阅读
- php - Flatsome 主题 woocomerce 迷你购物车,带有数量而不是购物车中的物品
- .htaccess - .htaccess 中的条件修改
- assembly - 程序集 8086 键盘移位标志始终返回 0
- xamarin - 需要在更新发生时告诉用户
- php - 致命错误最长时间执行,在 API 请求中,我 php
- javascript - Nightwatch:检索新会话时发生错误
- python-3.x - Pytest 使用夹具比较几个类实例
- python - Pip 没有安装任何东西
- python - SQLAlchemy foreign_keys 关系错误
- javascript - Jquery更新所选div上的文本