代码之家  ›  专栏  ›  技术社区  ›  Sergio Romero

如何重新运行具有t4扩展名而不是tt的t4模板

  •  1
  • Sergio Romero  · 技术社区  · 9 年前

    这一定很简单,我真的很沮丧,我找不到它发生的地方。

    我刚刚安装了 实体框架6.1.3 以及 实体框架.代码模板.CSharp 而且 6.1.3 .

    我想修改模板并运行它们,所以我首先在Build菜单上单击Transfor All T4 templates,然后右键单击Context.cs。t4和EntityType.cs。t4模板,但没有找到“运行自定义工具”选项。

    我查看了文件的属性,并尝试将两个文件的“自定义工具”属性设置为“TextTemplatingFileGenerator”,一旦这样做,我就会收到以下编译错误:

    正在编译转换:元数据文件“EntityFramework”无法 建立
    编译转换:元数据文件 'Microsoft.Data.Entity。找不到设计“”。

    关于我所关注的EF样本 this site 在安装模板后,它提到可以再次运行反向工程过程,但为了做到这一点,我必须删除之前创建的所有cs文件。这真的有必要吗?

    我的最终目标是修改一些东西,以便在一个单独的项目中创建实体,但我找到的所有解决方案显然都在谈论执行t4模板,这是我无法做到的。

    谢谢你的帮助。

    1 回复  |  直到 9 年前
        1
  •  1
  •   vendettamit    9 年前

    您收到的错误是因为通过nugets安装的默认模板不知道实体框架的IDE工具。因此,您只需要在 Context.cs.tt :

    <#@ assembly name="Microsoft.Data.Entity.Design" #>
    <#@ assembly name="EntityFramework" #>
    

    收件人:

    <#@ assembly name="%VS120COMNTOOLS%..\IDE\EntityFramework.dll" #>
    <#@ assembly name="%VS120COMNTOOLS%..\IDE\Microsoft.Data.Entity.Design.dll" #>
    

    现在您将得到一个合法的错误,即参数模型为空。

    使现代化

    你错过了你所指文章的第三步。要运行 Reverse Engineer code first 您需要安装 EF power tool 扩大安装后,请执行以下步骤:

    选择项目 -> 右键单击 -> 在EntityFramework下 -> 首先对代码进行反向工程。选择要在其上运行自定义模板的数据库。

    这些EF6模板是参数化模板,您不能简单地通过右键单击运行它们->运行自定义工具。我认为这就是模板文件扩展名重命名为的原因 .t4 因为这些仅针对EF电动工具。

    更新2

    我已修改 EFPowerTool extension 以支持基于命名空间的目录结构创建。创建了拉动 request codeplex的EF6.x项目。我还创建了一个 experimental branch 在github上进行测试( 当然,在发送更新的拉取请求之前,可以添加和测试修复/增强的空间 )

    您可以从以下位置下载带有建议修复程序的扩展安装程序 here 。希望这能帮助你暂时解决问题。