2016-03-01 56 views
1

这必须是如此简单的事情我真的很沮丧,我无法找到它发生的地方。如何重新运行带有t4扩展名而不是t4的t4模板

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

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

我看着文件的属性,并试图只要我做,我得到这些编译错误的设置这两个文件为‘TextTemplatingFileGenerator’和‘自定义工具’属性:

编译转型:元数据文件'EntityFramework'找不到 。
编译转换:元数据文件 无法找到'Microsoft.Data.Entity.Design'。

在那我从this site安装它提到,反向工程过程可以再次运行模板后,但为了做到这一点显然是继EF样品我会删除所有已在CS文件之前创建。这真的有必要吗?

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

谢谢你的帮助。

+0

它应该是'.tt'至少在VS2013。 '.t4'不是已知的文件扩展名。尝试将扩展名从'.t4'重命名为'.tt'。它应该给你选择运行模板。 – vendettamit

+0

@vendettamit - 我忘记提及这个问题。我已经尝试过了,并得到了与上述完全相同的编译错误。我的VS版本是2013更新5 –

回答

1

因为通过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" #> 

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

更新

你错过从你指文章的第三步。要运行Reverse Engineer code first,您需要安装EF power tool扩展名。安装完毕后按照步骤:

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

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

更新2

我已经修改了EFPowerTool extension支持基于命名空间的目录结构创建。在codeplex的EF 6.x项目上创建了一个拉request。此外,我已经在GitHub上创建了一个experimental branch用于测试目的。(有一定的空间,修复/增强它可以发送更新的拉动请求之前添加和测试)

你可以建议修复从下载扩展安装程序here。希望这会帮助你解决你的问题。

+0

好的,所以现在我得到了你提到的错误,但它仍然没有解决问题,即使我现在可以更改扩展并选择“运行自定义工具”选项,我该如何摆脱这一点,以便代码正确执行? –

+0

现在您需要将值提供给模板中定义的参数。看看这个链接http://romiller.com/2012/05/09/customizing-reverse-engineer-code-first-in-the-ef-power-tools/如果有帮助。 – vendettamit

+0

@SergioRomero我已经更新了我的答案。 – vendettamit