问题安装实体框架7 RC1

时间:2015-11-20 15:09:25

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

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

  

PM> Install-Package EntityFramework.MicrosoftSqlServer -Pre

但是我收到以下错误:

  

安装失败。回滚...
  Package' Microsoft.Extensions.Logging 1.0.0-rc1-final'在项目' XYZ'

中不存在

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

  

Install-Package:无法添加对System.Collections.Concurrent'的引用。请确保它在全局程序集缓存中。

我用谷歌搜索,可以看到Concurrent集合已经在dotnet中存在了一段时间,但我在开发框中没有这样的汇编。

更新

gacutil查询gac后,我意识到组件确实存在:

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

  

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

7 个答案:

答案 0 :(得分:11)

由于我在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的安装完成,没有错误。

答案 1 :(得分:8)

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

答案 2 :(得分:3)

在我的情况下,我不得不删除xUnit nuget包。删除这些引用后,Microsoft.Extensions.Logging 1.0.0-rc1-final正确安装。之后我没有任何问题地添加了xUnit。

答案 3 :(得分:2)

如果您现在正在获取此信息(如2016年4月),则这些答案可能已过期。我是第一次安装EF7,但我发现的是:

  • 我安装EntityFramework.SqlServer首先认为这是最顶级的'我需要的包
  • 我尝试安装EntityFramework.Commands并获得了愚蠢的收藏品'上面显示的错误

我仔细查看了版本。

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

所以我去了'管理nuget包'为项目和更新更新下显示的所有内容。 我实际上必须做两次。

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

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

但这不是你想要做的吗?

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

因此,您确实要卸载*.SqlServer并安装*.MicrosoftSqlServer

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

答案 4 :(得分:1)

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

  1. 创建一个没有安装NuGets的干净类库。
  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
  8. 注意!如果第5步失败,则必须执行以下操作:

    1. install-package System.Collections.Concurrent -version 4.0.0 -projectName YourProjectNameFromStep4
    2. install-package System.Runtime -version 4.0.0 -projectName YourProjectNameFromStep4
    3. 步骤6 成功安装后,可以删除这些内容:

      1. uninstall-package System.Collections.Concurrent -projectName YourProjectNameFromStep4
      2. uninstall-package System.Runtime -projectName YourProjectNameFromStep4
      3. 重新启动Visual Studio后,它可能会说“找不到System.Collections.Concurrent但是闭上眼睛似乎有效。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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