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

本文关键字:t4 tt 模板 扩展名 重新运行 | 更新日期: 2023-09-27 18:36:54

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

我刚刚安装了EntityFramework 6.1.3以及EntityFramework.CodeTemplates.CSharp6.1.3

我想修改模板并运行它们,所以我首先单击"构建"菜单上的"Transfor All T4 模板",然后右键单击 Context.cs.t4 和 EntityType.cs.t4 模板,但选项"运行自定义工具"无处可寻。

我查看了文件

的属性,并尝试将两个文件的"自定义工具"属性设置为"文本模板文件生成器",一旦我这样做,我就会收到这些编译错误:

编译转换:元数据文件"实体框架"无法 发现。
编译转换:元数据文件 找不到"Microsoft.Data.Entity.Design"。

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

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

谢谢你的帮助。

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

由于通过 nuget 安装的默认模板不知道实体框架的 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" #>

现在,您将获得参数模型为空的合法错误。

更新

您错过了所引用文章中的第 3 步。若要运行Reverse Engineer code first需要安装 EF 电动工具扩展。安装后,请按照以下步骤操作:

首先选择项目 -> 右键单击 -> 下的

EntityFramework-> 逆向工程代码。选择要在其上运行自定义模板的数据库。

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

更新 2

我修改了EFPowerTool扩展以支持基于命名空间的目录结构创建。在代码复合体的 EF 6.x 项目上创建了一个拉取请求。此外,我还在github上创建了一个用于测试目的的实验分支。(肯定有修复/增强的空间,可以在发送更新的拉取请求之前添加和测试

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