首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将SubMenu添加到VS解决方案资源管理器项目和项节点类型

将SubMenu添加到VS解决方案资源管理器项目和项节点类型
EN

Stack Overflow用户
提问于 2020-06-10 11:52:05
回答 2查看 1.3K关注 0票数 1

我想构建一个VS外接程序,它扩展了解决方案资源管理器上下文菜单。

我知道如何使用IDM_VS_CTXT_ITEMNODEIDM_VS_CTXT_PROJNODE添加IDM_VS_CTXT_ITEMNODEIDM_VS_CTXT_PROJNODE,如下所示

代码语言:javascript
运行
复制
<Group guid="guidCmdSet" id="grpIdMenuProjectItem" priority="0x0700">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" />
</Group>

然而,我想显示的菜单应该显示复杂的上下文菜单和子项。我想将相同的菜单项添加到Project和item上下文菜单中。

所以我试过

代码语言:javascript
运行
复制
<Group guid="guidCmdSet" id="grpIdMenuProjectItem" priority="0x0700">
   <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" />
   <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
</Group>

但是id不起作用。

问题是,vsct文件为孩子声明了父母,所以我不能只声明一个孩子并将其链接到多个父母。

如何将相同的菜单添加到Project和Item上下文菜单?我想避免复制粘贴的grpIdMenuProjectItem子程序,这是可能的。

整个源代码示例可在github找到

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-15 09:01:03

解决办法是像佩里所说的那样使用CommandPlacement

若要使用子菜单项复制同一组,我从grpIdMenuProjectItem组声明中删除了父元素。

代码语言:javascript
运行
复制
<Group guid="guidCmdSet" id="grpIdMenuProjectItem" priority="0x0700">
</Group>

并为项目、项目和文件夹父级添加了三个命令位置。

代码语言:javascript
运行
复制
<CommandPlacements>
    <CommandPlacement guid="guidCmdSet" id="grpIdMenuProjectItem" priority="0xF00">
            <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" />
    </CommandPlacement>
    <CommandPlacement guid="guidCmdSet" id="grpIdMenuProjectItem" priority="0xF00">
            <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" />
    </CommandPlacement>
    <CommandPlacement guid="guidCmdSet" id="grpIdMenuProjectItem" priority="0xF00">
            <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_FOLDERNODE" />
    </CommandPlacement>
</CommandPlacements>

CommandPlacements节点应该在Commands节点如文件所示之后添加。

票数 1
EN

Stack Overflow用户

发布于 2020-06-12 03:33:00

将SubMenu添加到VS解决方案资源管理器项目和项节点类型

您可以使用使一个按钮在多个菜单中使用的CommandPlacements

溶液

通常是,您可以使用这种格式来实现您的需求:

代码语言:javascript
运行
复制
 <CommandPlacements>
            <CommandPlacement guid="xxx(the same button guid)" id="xxx(the same button id)" priority="0xF00">
                <Parent guid="xxx(the first group guid)" id="xxx(the first group id)"/> 
            </CommandPlacement>

       <CommandPlacement guid="xxx(the same button guid)" id="xxx(the same button id)" priority="0xF00">
                <Parent guid="xxx(the second group guid)" id="xxx(the second group id)"/>   
            </CommandPlacement>

        ..........

    </CommandPlacements>

在您的情况下,举个例子,我让您的按钮Sample Menu Item 1同时用于IDM_VS_CTXT_ITEMNODEIDM_VS_CTXT_PROJNODE

以来,您已经在IDM_VS_CTXT_ITEMNODE下的QQQ Menu子菜单中创建了Sample Menu Item 1,您只需要在CommandPlacements中定义按钮Sample Menu Item 1,如下所示:

代码语言:javascript
运行
复制
<CommandPlacements>
        <CommandPlacement guid="guidCmdSet" id="sampleMenuItem" priority="0xF00">
            <Parent guid="guidVSIXProject1PackageCmdSet" id="MyMenuGroup"/> 
        </CommandPlacement>
</CommandPlacements>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62302909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档