Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 安装实体框架7 RC1时出现问题_.net_Entity Framework_Visual Studio_Nuget_.net 4.5.2 - Fatal编程技术网

.net 安装实体框架7 RC1时出现问题

.net 安装实体框架7 RC1时出现问题,.net,entity-framework,visual-studio,nuget,.net-4.5.2,.net,Entity Framework,Visual Studio,Nuget,.net 4.5.2,我正在尝试将EF7 rc1安装到现有项目: PM>安装包EntityFramework.MicrosoftSqlServer–预安装 但我得到了以下错误: 安装失败。正在回滚… 项目“XYZ”中不存在包“Microsoft.Extensions.Logging 1.0.0-rc1-final” 在跟踪的最后,我得到了另一条信息: 安装包:未能添加对“System.Collections.Concurrent”的引用。请确保它位于全局程序集缓存中 我在谷歌上搜索了一下,发现并发集合在dotnet中

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

PM>安装包EntityFramework.MicrosoftSqlServer–预安装

但我得到了以下错误:

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

在跟踪的最后,我得到了另一条信息:

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

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

更新:

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

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

System.Collections.Concurrent,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL


这里也有同样的问题。我卸载了ef7-beta8及其依赖项并重新安装了ef7。。。问题解决了,所以更新逻辑或nuget本身似乎有一个bug,我不确定。

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

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

在我的情况下,我不得不删除xUnit nuget软件包。删除这些引用后,请正确记录Microsoft.Extensions.Logging 1.0.0-rc1-final installs。之后,我将xUnit添加回来,没有任何问题。

因为我在GAC中没有
System.Collections.Concurrent
assembly,所以我安装了
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
的变通方法是:

  • 创建一个没有安装NUGET的干净类库
  • install package entityframework.core-pre
  • 复制
    packages.config
    的内容,但不包括表示
    EntityFramework.Core的行
  • 包括要将其安装到的
    packages.config
    中的行
  • 更新软件包-重新安装-projectName yourprojectname fromStep4
  • 安装包EntityFramework.Core-pre
  • 注意如果步骤5失败,您必须执行以下操作:

  • install package System.Collections.Concurrent-version 4.0.0-projectName yourprojectname fromStep4
  • install package System.Runtime-version 4.0.0-projectName YourProjectNameFromStep4
  • 然后,在第6步安装成功后,可以删除这些:

  • uninstall package System.Collections.Concurrent-projectName yourprojectname fromStep4
  • uninstall package System.Runtime-projectName yourprojectname fromStep4

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

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

    • 我安装了
      EntityFramework.SqlServer
      首先认为这是我需要的最“顶级”的软件包
    • 我试图安装
      EntityFramework.Commands
      ,但出现了上面显示的愚蠢的“collections”错误
    我仔细看了这些版本

    • SqlServer仍然是Beta 8
    • 命令是RC1
    因此,我去了项目的“管理nuget软件包”,并更新了更新下显示的所有内容。 实际上我不得不做两次

    这就把EF7核心的东西提升到了RC1

    然后我就可以安装
    EntityFramework.Commands
    ,没有问题了


    但这不是你想做的? 因为他们将
    EntityFramework.SqlServer
    包重命名为
    EntityFramework.MicrosoftSqlServer

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


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

    我的开发框中没有这样的程序集。
    这是什么意思?如何检查?@HamletHakobyan如果我想设置对它的引用,它不在程序集列表中。我甚至使用了gacutil命令,我在我的gac中看不到该程序集。@HamletHakobyan,我在查询g时打错了ac.是的,我现在有4.0版。你的项目的目标框架版本是什么?@HamletHakobyan 4.5.2Tanks Yanko,这不是我的问题。我以前有6.x版本,并成功卸载。啊,好吧:-),但我认为那里有问题,因为我看到了相同的错误消息(不折不扣)当我从beta8升级到rc1时,这也是我的做法。同样的问题,但我只是在删除了对其他NuGet软件包(StructureMap、Caliburn Micro、MahApps Metro、MaterialDesignInXaml、Dragablz、MediatR、FluentValidation)的引用后才使它起作用。我遇到了完全相同的问题,这就是解决我问题的方法。在我的情况下,接受的答案不起作用。我有一个4.6 WPF项目,它不会安装Nuget软件包(与OP相同的错误)。有趣的是,没有4