29

如何解决这些错误:

  1. 加载包含文件 'EF.Utility.CS.ttinclude' 返回了一个 null 或空字符串。
  2. 值不在预期范围内。

使用的工具:VS 2012、Entity Framework 5.0.0、T4MVCExtensions 3.5.0、.NET Framework 4.5

我一直在大型 MVC 解决方案中的项目中使用 EF 和 T4 模板,没有发生任何事故。现在,当我右键单击 edmx 图时,EF 会响应消息:值不在预期范围内。当我编译 EF 项目时,它会响应以下消息:

  1. 加载包含文件 'EF.Utility.CS.ttinclude' 返回了一个 null 或空字符串。转换将不会运行。C:\Projects\NSAForms\NSAForms\NSAFormsEDM\NSAFormsEntities.tt
  2. 无法解析文件的包含文本:C:\Projects\NSAForms\NSAForms\NSAFormsEDM\EF.Utility.CS.ttinclude C:\Projects\NSAForms\NSAForms\NSAFormsEDM\NSAFormsEntities.tt

数据库中的每个表都有一个主键。我对这个问题的突然出现感到震惊。有没有人有一些建议如何解决这个问题?

提前致谢,

阿诺德

4

8 回答 8

70

我有非常相似的问题,我尝试使用 VS2012 和 VS2013。

重新安装 Entity Framework 6 Tools for Visual Studio 2012 http://www.microsoft.com/en-us/download/confirmation.aspx?id=40762 后,一切都恢复正常。

于 2013-11-13T18:44:27.433 回答
28

在 VS 2012 中,只有选择了Microsoft Web Developer ToolsMicrosoft SQL Server Data Tools组件时才会安装EF.Utility.CS.ttinclude文件。

于 2013-02-22T00:31:40.870 回答
5

重新安装适用于 Visual Studio 2012 的 Entity Framework 6 工具http://www.microsoft.com/en-us/download/confirmation.aspx?id=40762为我工作

于 2015-11-09T15:55:14.230 回答
2

对于 VS2017,我最终将 EF6.Utility.CS.ttinclude 添加到模型的文件夹中。这解决了我的 MySql 和 EF 问题。

文件位于:C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes\EF6.Utility.CS.ttinclude

更新 为避免执行上述操作,完全删除实体然后重新添加修复了问题。

于 2017-04-25T17:42:54.870 回答
0

视觉工作室 2017

得到了同样的错误,但只在一个测试项目中。在查看了测试项目和成功引用该文件的另一个项目后,我发现将以下内容添加到失败项目的 app.config 解决了我的问题

  <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>
于 2017-09-18T15:53:23.387 回答
0

在此功能已在 Professional 中运行后,最近安装 VS2017 Enterprise 时遇到此问题。
我的解决方案是:

  1. 打开 Visual Studio 安装程序并“修改”我的 Enterprise 安装。
  2. 在 Web & Cloud 部分下选择“ASP.NET 和 Web 开发”
  3. 点击右下角的“修改” 在此处输入图像描述

可能值得注意的是,我已经安装了 EF6,不需要重新安装它即可使其正常工作。

完成这些步骤并启动 Visual Studio 后,错误消失了,我能够成功生成我的类。希望这可以帮助!

于 2018-04-02T18:01:12.830 回答
0

以上所有解决方案都对我不起作用,所以我创建了一个新项目以查看问题是否仍然存在,但新创建的项目中没有出现错误。然后,我将该项目与旧备份进行比较,以检查最近所做的更改并发现了问题。我最近在降级包后将包 Clarius.TransformOnBuild 升级到更新的版本,错误消失了。

于 2019-01-30T06:04:00.427 回答
0

在我的情况下,问题是由一个奇怪的文件夹名称(%20而不是空格)引起的。我只是用空格代替了同一个文件夹的目录连接,%20它解决了这个问题。

这是我用来建立联结的 PowerShell 命令:

cd "c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\"
mklink /j "Entity Framework Tools" "Entity%20Framework%20Tools"
Junction created for Entity Framework Tools <<===>> Entity%20Framework%20Tools

然后,您可以使用ls查看目录内容,您应该会看到这两行(为简洁起见进行了编辑):

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
...
d----l        2/27/2019   9:57 AM                Entity Framework Tools
d-----        2/26/2019  12:24 PM                Entity%20Framework%20Tools
...

在模式下,l表示它是一个“链接”(又名联结),而d表示它是一个目录。通过建立联结而不是重命名文件夹,您可以确保两个目录名称始终有效。

于 2019-07-11T14:51:50.610 回答