.net 安装实体框架7 RC1时出现问题
我正在尝试将EF7 rc1安装到现有项目: PM>安装包EntityFramework.MicrosoftSqlServer–预安装 但我得到了以下错误: 安装失败。正在回滚….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中
项目“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