C# 为什么不是';我的VST软件包';s上下文菜单显示
我已经创建了一个包,我想在C# 为什么不是';我的VST软件包';s上下文菜单显示,c#,visual-studio-2010,vspackage,C#,Visual Studio 2010,Vspackage,我已经创建了一个包,我想在code窗口上下文菜单中添加一个菜单 <!-- This is the guid used to group the menu commands together --> <GuidSymbol name="guidCopyForReviewVSPackageCmdSet" value="{4ae6ff5a-6e7e-48bd-86b0-37fd9ab20629}"> <IDSymbol name="MyMenuGroup" valu
code窗口
上下文菜单中添加一个菜单
<!-- 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>
经过一番搜索,我找到了几篇解释如何做的文章。问题是,我无法让它工作
<!-- 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>
以下是我在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>
<!-- 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>
我做错了什么?我肯定错过了一些东西,因为几乎每个样品(以及关于这个问题的答案)都建议在包装中添加这样的菜单
<!-- 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>
我所尝试的:
<!-- 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>
- 先分组,然后在该组中添加我的菜单:不起作用
- 检查我是否使用了正确的GUID(带)
- 使用
而不是IDG\u VS\u MENU\u CONTEXTMENUS
(看了这篇文章后:)IDM\u VS\u CTXT\u CODEWIN
- 将与实际工作的菜单相同的父菜单指定给第二个菜单,但仍不显示
- 很多关于我问题的不成功的谷歌搜索
正如您所看到的,我使用了BeforeQueryStatus事件,但它从未被触发…对我来说,提到的常量起作用了我从Visual Studio 2013中VSPackage的标准模板开始,然后将父id更改为IDM_VS_CTXT_CODEWIN。
<!-- 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>
以下是我现在拥有的:
<!-- 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>
vsct:
<!-- 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>
但是,这仅显示“真实”代码窗口中的菜单,而不是例如在aspx/ascx编辑器中。必须将上下文菜单添加到上下文菜单上的组中才能显示它。。。这个语法花了我几天的时间反复试验才确定
<!-- 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>
<!-- 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>
我创建了一个新的VSPackage扩展项目,然后更新了我的VSTS文件,如下所示,以创建如上所示的上下文菜单:
<!-- 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>
<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>
测试上下文菜单
上下文菜单按钮
对于ASPX/ASCX编辑器,请使用以下代码:
<!-- 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>
为关联菜单添加符号:
<!-- 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>
<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>
添加关联菜单:
<!-- 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>
<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>
更多信息请访问:在我的例子中,问题是我手动添加了包含110/112/400项的资源文件。当您让向导生成所有内容时,.resx文件将以稍微不同的方式添加到.csproj中:
<!-- 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>
真的
谢谢您的回答!当时我肯定还做错了什么,但是我现在不在这个项目上工作,所以我稍后会检查方法。你有没有找到解决问题的方法。我也面临同样的问题我很抱歉不我没有。。。这是一个大项目的一小部分,所以我找到了另一种方法来完成我所需要的。你试过@Marcel建议的吗?是的,它在上下文菜单上创建了一个按钮,而不是上下文菜单上的菜单。所以这没有帮助。我的要求是在上下文菜单上创建一个菜单。