EF6 /无法使用自动生成的* .tt文件构建项目(“无法解析包含文件的文件:....... \ EF6.Utility.CS.ttinclude。”)

时间:2018-04-19 06:58:05

标签: c# entity-framework-6

背景

我使用 Visual Studio 2017 Enterprise 中创建的 Entity Framework 6 获得了简单的CRUD应用。使用*.edmx

创建架构/模型/数据库内容

问题

将reposiroty克隆到不同的计算机(或删除所有自动生成的*.cs文件),同时尝试构建/重建后,每个*.tt文件都出现以下错误:

Failed to resolve include text for file:[PATH TO APP DIRECTORY HERE]\EF6.Utility.CS.ttinclude.

Loading the include file 'EF6.Utility.CS.ttinclude' returned a null or empty string. The transformation will not be run.

手动重新生成文件正常(通过打开*.tt文件上的弹出式菜单并点击Run Custom Tool

此文件存在

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude

但我完全不知道为什么VS会在项目路径中寻找它。

这是VS / EF6配置的错误/问题吗?

我试过了:

  • 重新安装实体框架工具
  • 添加“ASP.NET和Web开发”

这些都没有帮助:(

类似主题:

How can I resolve this error: Loading the include file 'EF.Utility.CS.ttinclude' returned a null or empty string

在自动生成的*.tt文件中硬编码正确路径IMO不是正确的解决方案

1 个答案:

答案 0 :(得分:0)

遵循Microsoft guide之后,我添加了“ IncludeFolders”标记来解析“ EF6.Utility.CS.ttinclude”和“ ItemGroup”以使模板处理中的DevEnvDir无效。 .csproj文件的外观如下:

...
<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
    <TransformOnBuild>True</TransformOnBuild>
    <TransformOutOfDateOnly>false</TransformOutOfDateOnly>
    <IncludeFolders>$(DevEnvDir)Extensions\Microsoft\Entity Framework Tools\Templates\Includes</IncludeFolders>
</PropertyGroup>
<ItemGroup>
    <T4ParameterValues Include="DevEnvDir">
        <Value>$(DevEnvDir)</Value>
        <Visible>False</Visible>
    </T4ParameterValues>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(VSToolsPath)\TextTemplating\Microsoft.TextTemplating.targets" />