如何解决此错误:加载包含文件“EF.Utility.CS.ttinclude”返回null或空字符串

时间:2013-02-21 10:14:35

标签: visual-studio entity-framework-5 t4 .net-framework-version

如何解决这些错误:

  1. 加载包含文件' EF.Utility.CS.ttinclude'返回null或空字符串。
  2. 价值不在预期范围内。
  3. 使用的工具: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:\项目\ NSAForms \ NSAForms \ NSAFormsEDM \ NSAFormsEntities.tt
    2. 无法解析文件的包含文本:C:\ Projects \ NSAForms \ NSAForms \ NSAFormsEDM \ EF.Utility.CS.ttinclude C:\ Projects \ NSAForms \ NSAForms \ NSAFormsEDM \ NSAFormsEntities.tt
    3. 数据库中的每个表都有一个主键。我突然意识到这个问题突然出现了。有没有人有一些建议如何解决这个问题?

      提前致谢,

      阿诺德

8 个答案:

答案 0 :(得分:70)

我有类似的问题,我试过VS2012和VS2013。

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

答案 1 :(得分:28)

在VS 2012中,只有在 Microsoft Web开发人员工具 Microsoft SQL Server数据工具< Microsoft Web开发人员工具时才会安装 EF.Utility.CS.ttinclude 文件/ strong>组件被选中。

答案 2 :(得分:4)

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

答案 3 :(得分:0)

对于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

更新为避免上述操作,请完全删除实体,然后重新添加以解决问题。

答案 4 :(得分:0)

  

Visual Studio 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>

答案 5 :(得分:0)

在使用此功能在Professional中工作之后,最近安装了VS2017 Enterprise会出现此问题 我的解决方案是:

  1. 打开Visual Studio Installer程序并“修改”我的Enterprise安装。
  2. 在Web&amp;网站下选择“ASP.NET和Web开发”。云部分
  3. 点击右下角的“修改” example with only custom painting
  4. 值得注意的是,我已经安装了EF6,并且无需重新安装它以使其正常工作。

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

答案 6 :(得分:0)

上述所有解决方案均不适用于我,因此我创建了一个新项目,以查看问题是否仍然存在,但在新创建的项目中未发生错误。然后,我将项目与旧备份进行了比较,以检查最近所做的更改并发现了问题。降级后,我最近将软件包升级到最新版本。

答案 7 :(得分: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表示它是一个目录。通过建立联结而不是重命名文件夹,可以确保两个目录名都将始终起作用。