【问题标题】:Issue Installing Entity Framework 7 RC1安装实体框架 7 RC1 的问题
【发布时间】:2015-11-20 15:09:25
【问题描述】:

我正在尝试将 EF7 rc1 安装到现有项目:

PM> 安装包EntityFramework.MicrosoftSqlServer –Pre

但我收到以下错误:

安装失败。回滚...
项目“XYZ”中不存在包“Microsoft.Extensions.Logging 1.0.0-rc1-final”

在跟踪结束时,我收到了另一条消息:

安装包:未能添加对“System.Collections.Concurrent”的引用。请确保它在全局程序集缓存中。

我用谷歌搜索,可以看到并发集合已经在 dotnet 中有一段时间了,但我的开发箱中没有这样的程序集。

更新:

在使用gacutil 查询 gac 后,我意识到确实存在该程序集:

全局程序集缓存包含以下程序集:

System.Collections.Concurrent,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a,处理器架构=MSIL

【问题讨论】:

  • I have not such assembly in my dev box 这是什么意思?你如何检查?
  • @HamletHakobyan 如果我想设置对它的引用,它不会出现在程序集列表中。我什至使用 gacutil 命令在我的 gac 中看不到该程序集。
  • @HamletHakobyan,我在询问 gac 时打错了字。是的,我有 4.0 版。
  • 你项目的目标框架版本是什么?
  • @HamletHakobyan 4.5.2

标签: .net entity-framework visual-studio nuget .net-4.5.2


【解决方案1】:

因为我在 GAC 中没有 System.Collections.Concurrent 程序集,所以我安装了 System.Collections.Concurrent NuGet 包:

Install-Package System.Collections.Concurrent

然后手动添加对packages\System.Collections.Concurrent.4.0.10\lib\dotnet\System.Collections.Concurrent.dll的引用(因为net46文件夹是空的)。

之后,EntityFramework.MicrosoftSqlServer 的安装完成,没有任何错误。

【讨论】:

  • 我遇到了完全相同的问题,这就是解决我的问题的原因。接受的答案在我的情况下不起作用。我有一个 4.6 WPF 项目,它不会安装 Nuget 包(与 OP 相同的错误)。有趣的是,System.Collections.Concurrent 没有 4.6 dll,所以我不得不使用 dotnet 文件夹中的版本。就像这个解决方案一样。他们没有提供 4.5/4.6 版本的程序集,所以我认为 NuGet 正在崩溃。
【解决方案2】:

收到此错误后,我能够通过删除对其他项目的引用将 EF7 RC1 安装到我的项目中,之后我能够成功地将 EF7 RC1 安装到我需要它的项目中,然后添加回引用,之后解决方案开始编译(并且至少一些基本的 EF 功能开始工作)。可能是 nuget/dnu 的故障。

【讨论】:

  • 这也是我的选择。
  • 同样的问题,但是我只有在删除对其他 NuGet 包(StructureMap、Caliburn Micro、MahApps Metro、MaterialDesignInXaml、Dragablz、MediatR、FluentValidation)的引用后才能正常工作。
【解决方案3】:

就我而言,我必须删除 xUnit nuget 包。删除这些引用 Microsoft.Extensions.Logging 1.0.0-rc1-final 后正确安装。之后我毫无问题地添加了 xUnit。

【讨论】:

    【解决方案4】:

    如果您现在得到这个(如 2016 年 4 月),那么这些答案可能已经过时了。我是第一次安装 EF7,但我发现是这样的:

    • 我安装了EntityFramework.SqlServer 首先认为这是我需要的最“顶级”包
    • 我尝试安装 EntityFramework.Commands 并得到上面显示的愚蠢的“集合”错误

    我仔细查看了版本。

    • SqlServer 仍是 Beta 8
    • 命令是 RC1

    所以我去了项目的“管理 nuget 包”并更新了更新下显示的所有内容。 我实际上不得不这样做两次。

    然后将 EF7 核心内容提升到 RC1

    然后我可以毫无问题地安装EntityFramework.Commands


    但这不是你想要做的吗?

    Why? 因为他们将EntityFramework.SqlServer包重命名为EntityFramework.MicrosoftSqlServer

    所以你实际上想卸载*.SqlServer 并安装*.MicrosoftSqlServer

    这就解释了为什么没有 RC1 版本。

    【讨论】:

      【解决方案5】:

      这是一个 PITA,但使用 .Net v4.5.2 我安装 EntityFramework.Core -pre 的解决方法是:

      1. 创建一个未安装 NuGet 的干净类库。
      2. install-package entityframework.core -pre
      3. 复制packages.config的内容,但不要包含代表EntityFramework.Core的行
      4. packages.config 中包含您要安装它的行。
      5. update-package -reinstall -projectName YourProjectNameFromStep4
      6. install-package EntityFramework.Core -pre

      注意!如果第 5 步失败,您必须执行以下操作:

      1. install-package System.Collections.Concurrent -version 4.0.0 -projectName YourProjectNameFromStep4
      2. install-package System.Runtime -version 4.0.0 -projectName YourProjectNameFromStep4

      第 6 步安装成功后,可以删除这些:

      1. uninstall-package System.Collections.Concurrent -projectName YourProjectNameFromStep4
      2. uninstall-package System.Runtime -projectName YourProjectNameFromStep4

      重新启动 Visual Studio 后,它可能会说“找不到 System.Collections.Concurrent,但为此闭上眼睛似乎可行。

      【讨论】:

        【解决方案6】:

        同样的问题。我卸载了 ef7-beta8 及其依赖项并重新安装了 ef7... 问题已解决,所以似乎更新逻辑或 nuget 本身存在错误,不确定。

        【讨论】:

        • 谢谢Yanko,这不是我的问题。我之前有 6.x 并成功卸载。
        • 啊,好吧 :-),但我认为那里有问题,因为当我从 beta8 升级到 rc1 时,我看到了相同的错误消息(信中)。
        【解决方案7】:

        作为一种解决方法,我创建了一个新项目,安装了 EF 7,手动添加了以前的源文件并且它工作正常。

        【讨论】:

          猜你喜欢
          • 2016-03-09
          • 1970-01-01
          • 2011-01-05
          • 1970-01-01
          • 1970-01-01
          • 2011-03-09
          • 2012-10-13
          • 1970-01-01
          • 2013-07-17
          相关资源
          最近更新 更多