我使用 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配置的错误/问题吗?
我试过了:
这些都没有帮助:(
类似主题:
在自动生成的*.tt
文件中硬编码正确路径IMO不是正确的解决方案
答案 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" />