如何将命令添加到ADO.NET实体数据模型设计器的上下文菜单中?

cyn*_*nic 1 visual-studio-2010 ado.net-entity-data-model vspackage visual-studio-extensions

基本上,我需要Visual Studio包项目文件中的正确值guidid属性.vsct,如:

<Group guid="guidVSPackage1CmdSet" id="MyMenuGroup" priority="0x0600">
  <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>
Run Code Online (Sandbox Code Playgroud)

以上内容直接来自默认项目模板,并向Tools主菜单添加命令.我在哪里可以找到(或我如何嗅探)ADO.NET实体数据模型设计器上下文菜单的guid:id值,具有"从数据库更新模型......"等等?

在您提出问题之前:VS 2010实体设计器中的MEF可扩展性选项不包括我的场景 - 我需要实现一个命令来在独立和FK映射关联之间进行转换.

cyn*_*nic 5

得到它了.您需要使用VS2010 SDK目录中的vsct.exe对Microsoft.Data.Entity.Design.Package.dll中编译的命令表进行反编译(只需使用Reflector解压缩EntityDesigner.ctmenu,将其重命名为EntityDesigner.cto然后运行vsct.exe传递EntityDesigner.cto的路径作为唯一参数).要在打开上下文菜单时加载另一个VSPackage,您至少需要使用DynamicVisibilityflag 声明它们,如下所示:

<Button guid="guidVSPackage1CmdSet" id="cmdidMyCommand"
        priority="0x0100" type="Button">
  <Parent guid="guidVSPackage1CmdSet" id="MyMenuGroup" />
  <Icon guid="guidImages" id="bmpPic1" />
  <CommandFlag>DynamicVisibility</CommandFlag>
  <Strings>
    <CommandName>cmdidMyCommand</CommandName>
    <ButtonText>My Command name</ButtonText>
  </Strings>
</Button>
Run Code Online (Sandbox Code Playgroud)

实际ID是:

<GuidSymbol name="guidCmdSetEntityDesigner"
       value="{11ac0a76-365e-490d-abad-e44e52897c7d}">
  <IDSymbol name="menuidContext" value="0x00010000" />
Run Code Online (Sandbox Code Playgroud)