Entity framework 实体框架的T4代码生成器-未能解析EF.Utility.CS.tInclude的包含文本
我正在尝试使用OpenRIA服务自动化Silverlight 5应用程序的CI服务器的构建过程 我有一个database first Entity Framework.edmx生成的文件,从中生成DomainModel,作为构建的一部分,我希望通过T4代码生成器生成实体 项目设置 我的服务器Entity framework 实体框架的T4代码生成器-未能解析EF.Utility.CS.tInclude的包含文本,entity-framework,msbuild,wcf-ria-services,t4,ef-database-first,Entity Framework,Msbuild,Wcf Ria Services,T4,Ef Database First,我正在尝试使用OpenRIA服务自动化Silverlight 5应用程序的CI服务器的构建过程 我有一个database first Entity Framework.edmx生成的文件,从中生成DomainModel,作为构建的一部分,我希望通过T4代码生成器生成实体 项目设置 我的服务器.csproj已更改 进口 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="
.csproj
已更改
进口
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
# Microsoft.TextTemplating.targets are added after CSharp.targets
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\TextTemplating\Microsoft.TextTemplating.targets"/>
可疑的
所有.tt
文件都有T4导入
<#@ include file="EF.Utility.CS.ttinclude"#>
我怀疑它的目标是本地目录,甚至不是构建目录
我很好奇为什么Microsoft.textmplating.targets
变量的目标是EF.Utility.CS.ttinclude
中的{path to my project}
而不是C:\Program Files(x86)\Microsoft visualstudio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\include
。
加载include文件“EF.Utility.CS.ttinclude”返回一个null或空字符串
根据此路径似乎是合法的
也许我错过了一些设置、导入或路径设置?
如何更改或更新此实用程序的路径
已检查相关问答:
- -安装/重新安装用于VS的Entity Framework 6工具不起作用
- -不是这个问题,我的项目正在按正确的顺序进行
- -(对于其他人)这也是一个问题,如果您正在处理T4自动化构建,它可能是有用的
EF.Utility.CS.ttinclude
添加绝对或相对路径来解决。对于build server,最好的解决方案可能是将路径C:\Program files(x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\中通常可以找到的文件复制到项目中,然后更改行:
<#@ include file="EF.Utility.CS.ttinclude"#>
例如:
<#@ include file="..\..\EF.Utility.CS.ttinclude"#>
出于某种原因,当从MSBuild运行模板转换时,它会在.tt
文件所在的位置查找.tt
文件。我发现可以将包含文件保留为
<#@ include file="EF.Utility.CS.ttinclude"#>
通过将以下内容添加到我的配置中
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<connectionStrings>
您是否尝试过此操作或安装了Microsoft Web Developer Tools和Microsoft SQL Server Data Tools?安装Microsoft Web Developer Tools和Microsoft SQL Server Data Tools没有帮助。关于这个问题,事实并非如此。事件问题中描述的解决方法在所有情况下都不起作用。也许可以在“我不再参与项目”和这些问题中设置完整路径,因此我很难验证-您能否确认它在从MS Build手动运行时是否生成实体?但是。。。为什么?为什么默认的VS安装本身生成的文件有问题?…我不确定这些文件是由VS生成的,但根据我记忆中的情况,问题只发生在MSBuild中,在VS中才起作用。
<#@ include file="EF.Utility.CS.ttinclude"#>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<connectionStrings>