【问题标题】:How can I resolve this error: Loading the include file 'EF.Utility.CS.ttinclude' returned a null or empty string如何解决此错误:加载包含文件 'EF.Utility.CS.ttinclude' 返回 null 或空字符串
【发布时间】:2013-02-21 10:14:34
【问题描述】:

如何解决这些错误:

  1. 加载包含文件 'EF.Utility.CS.ttinclude' 返回一个空字符串。
  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”时返回了一个空字符串。转换将不会运行。 C:\Projects\NSAForms\NSAForms\NSAFormsEDM\NSAFormsEntities.tt
  2. 无法解析文件的包含文本:C:\Projects\NSAForms\NSAForms\NSAFormsEDM\EF.Utility.CS.ttinclude C:\Projects\NSAForms\NSAForms\NSAFormsEDM\NSAFormsEntities.tt

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

提前致谢,

阿诺德

【问题讨论】:

  • 这听起来不像是数据库问题,而更像是代码/解决方案问题 - 您是否在团队中工作并通过源代码控制进行同步?是否有人未能签入新文件?还有其他人遇到这些问题吗?恢复到早期版本的代码是否可以解决问题?如果是这样,是否可以识别问题变更集并进行比较?
  • @Basic。我恢复到 2013 年 2 月 15 日的部署版本。所有的文件都在那里。编译时仍然出现“EF.Utility.CS.ttinclude”错误。仍然无法右键单击 edmx 设计器而不得到: 值不在预期范围内。谢谢
  • 我创建了一个全新的项目并添加了 EF。得到完全相同的错误。
  • 有趣 - 你见过this answer吗?这意味着您可能需要 VS2012 SDK。我承认我不知道问题是什么,我在猜测,但如果我是你,我会先修复安装 VS2012,然后尝试安装 SDK。有没有可能你有任何干扰的扩展?
  • 当我在新项目中右键单击时,有时会看到不同的错误:参数不正确。 (来自 HRESULT 的异常:0x80070057 (E_INVALIDARG))

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


【解决方案1】:

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

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

【讨论】:

  • 你如何将它添加到源代码管理中??你会在每台机器上安装吗?
  • 谢谢,这为我省去了很多麻烦。
  • 我已经安装了 EF6 更新 6.1.1 并且想知道为什么在找到您的评论之前出现此错误。工具必须升级为与 EF6 库相同的版本。我遇到的错误是:错误 168“提供程序没有返回 ProviderManifest 实例。无法确定存储版本;需要有效的存储连接或版本提示。”感谢您的帮助。
  • 我在 VS2012 中使用 EF6 时出现此错误(一位同事在 VS2013 中启动了该项目)。错误文本为failed to resolve include text EF_6_.Utility.CS.ttinclude。为 VS2012 安装这些 EF 6 工具解决了这个问题。
  • 没有为我修复它。我的噩梦还在继续。
【解决方案2】:

在 VS 2012 中,EF.Utility.CS.ttinclude 文件仅在 Microsoft Web Developer ToolsMicrosoft SQL Server Data Tools 组件被选中。

【讨论】:

  • +1 很好的信息,但您能否考虑提供一个链接以供进一步阅读?
  • @Basic 不幸的是,我拥有的唯一链接是a comment on our bloga discussion on CodePlex。我会再次将它提交给团队,看看我们是否可以将它放在更明显的地方,比如Get It 页面。
  • @Basic。感谢您向 Brice 询问更多信息和解释。我花费了太多宝贵的工作时间来寻找文档的碎片。当我回到 Stack 查看 Brice 的答案时,我已经开始零问题地实施 Telerik 的 ORM。我还没有测试过,但是使用一个不依赖于其他未知(对我而言)库的工具是多么好的改变。
  • 安装时选择?何时何地被选中?
  • @froggythefrog 是的,在安装期间。如果您已经安装,请在“程序和功能”(或“添加/删除程序”)中选择该程序,单击“更改”,然后单击“修改”。
【解决方案3】:

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

【讨论】:

  • 对我来说仍然是问题
【解决方案4】:

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

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

【讨论】:

  • 将包含的文件复制到每个项目似乎不是好的做法和有效的解决方案
  • @MadScientist 同意了。更新了一个似乎效果更好的解决方案。
【解决方案5】:

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>

【讨论】:

    【解决方案6】:

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

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

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

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

    【讨论】:

      【解决方案7】:

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

      【讨论】:

      • 你降级到了哪个版本?我刚刚添加了这个包,现在遇到了这个错误。
      • Clarius.TransformOnBuild 版本 1.1.12
      【解决方案8】:

      在我的情况下,问题是由一个奇怪的文件夹名称引起的(使用 %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 表示它是一个目录。通过建立联结而不是重命名文件夹,您可以确保两个目录名称始终有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多