3

我无法为网站项目项添加上下文菜单条目。

如何重现问题:

  1. 创建一个 VS 包项目
  2. 转到 vsct 文件并将该groups部分替换为:

    <Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
       <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
    </Group>
    
    <Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
       <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE"/>
    </Group>
    
    <Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
       <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE"/>
    </Group>
    
    <Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
       <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_FOLDERNODE"/>
    </Group>
    
    <Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
       <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_SOLNNODE"/>
    </Group>
    
  3. 调试包并查看:这将为简单的 C# 项目中的解决方案、项目和项目项添加一个条目。但是当我创建一个 ASP.NET 网站项目(文件->新建->网站)时,除了解决方案项之外,我不会得到这些条目。

我确信这一定是可能的,因为 NuGet 具有网站项目项的条目。不幸的是,我无法从 NuGet 源代码中提取那段代码。

4

1 回答 1

8

过了一会儿,我找到了解决方案:(我不小心查看了 StyleCop 源代码:P)

<Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0050">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_WEBFOLDER"/>
</Group>

<Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0050">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_WEBITEMNODE"/>
</Group>

<Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0050">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_WEBPROJECT"/>
</Group>

这些没有记录在MSDN上。

无论如何,我很好奇 NuGet 是如何做到的,因为它们在vsct文件中没有任何内容,而是上下文菜单中的一个条目。

于 2012-08-23T14:54:35.910 回答