安装问题 Entity Framework 7 RC1

Issue Installing Entity Framework 7 RC1

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

PM> Install-Package EntityFramework.MicrosoftSqlServer –Pre

但出现以下错误:

Install failed. Rolling back...
Package 'Microsoft.Extensions.Logging 1.0.0-rc1-final' does not exist in project 'XYZ'

在跟踪的最后,我收到了另一条消息:

Install-Package : Failed to add reference to 'System.Collections.Concurrent'. Please make sure that it is in the Global Assembly Cache.

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

更新:

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

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

System.Collections.Concurrent, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL

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

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

的故障

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

在我的例子中,我不得不删除 xUnit nuget 包。删除这些引用后 Microsoft.Extensions.Logging 1.0.0-rc1-final 安装正确。之后我毫无问题地重新添加了 xUnit。

因为我在 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 安装完成,没有任何错误。

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

  1. 创建一个没有安装 NuGets 的干净的 class 库。
  2. install-package entityframework.core -pre
  3. 复制 packages.config 的内容,但 不包含 表示 EntityFramework.Core
  4. 的行
  5. packages.config 中包含要安装它的行。
  6. update-package -reinstall -projectName YourProjectNameFromStep4
  7. 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,但闭上眼睛似乎可行。

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

  • 我首先安装了 EntityFramework.SqlServer,认为这是我最需要的 'top level' 软件包
  • 我尝试安装 EntityFramework.Commands 并遇到上面显示的愚蠢 'collections' 错误

我仔细看了版本

  • SqlServer 仍然是 Beta 8
  • 命令是 RC1

所以我去了 'Manage nuget packages' 项目并更新了更新下显示的所有内容。 我实际上不得不这样做两次。

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

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


但这不是你想要的?

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

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

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