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

How to re-run t4 templates that have a t4 extension instead of tt

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

我刚刚安装了 EntityFramework 6.1.3 以及 EntityFramework.CodeTemplates.CSharp 6.1.3.

我想修改模板和 运行 它们,所以我首先单击“构建”菜单上的“转换所有 T4 模板”,然后右键单击 Context.cs.t4 和 EntityType.cs .t4 模板,但找不到选项 "Run Custom Tool"。

我查看了文件的属性并尝试将两个文件的 "Custom Tool" 属性 设置为 "TextTemplatingFileGenerator",但一旦我这样做,我就得到了这些编译错误:

Compiling transformation: Metadata file 'EntityFramework' could not be found.
Compiling transformation: Metadata file 'Microsoft.Data.Entity.Design' could not be found.

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

我最后的 objective 是修改内容,以便在单独的项目中创建实体,但我找到的所有解决方案显然都在谈论执行 t4 模板,这是我无法做到的要做。

感谢您的帮助。

您收到的错误是因为通过 nugets 安装的默认模板不知道 entity framework 的 IDE 工具。所以你只需要更改 Context.cs.tt 中的以下 header 值:

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

至:

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

现在你会得到参数模型为空的合法错误。

更新

您缺少所引用文章中的第 3 步。要 运行 Reverse Engineer code first 您需要安装 EF power tool 扩展。安装后按照以下步骤操作:

Select项目->右击->下的EntityFramework- > 首先逆向工程代码。 Select 您想要 运行 自定义模板的数据库。

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

更新 2

出于测试目的,我已经修改了 github 上的 EFPowerTool extension to support the namespace based directory structure creation. Created a pull request on EF 6.x project at codeplex. Also I have created an experimental branch。(肯定有 fixes/enhancement 的空间,可以在发送更新的 pull 之前添加和测试请求)

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