安装问题 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
的解决方法是:
- 创建一个没有安装 NuGets 的干净的 class 库。
install-package entityframework.core -pre
- 复制
packages.config
的内容,但 不包含 表示 EntityFramework.Core
的行
- 在
packages.config
中包含要安装它的行。
update-package -reinstall -projectName YourProjectNameFromStep4
install-package EntityFramework.Core -pre
注意!如果步骤 5 失败,您可以执行以下操作:
install-package System.Collections.Concurrent -version 4.0.0 -projectName YourProjectNameFromStep4
install-package System.Runtime -version 4.0.0 -projectName YourProjectNameFromStep4
在 步骤 6 安装成功后,可以删除这些:
uninstall-package System.Collections.Concurrent -projectName YourProjectNameFromStep4
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 版本。
我正在尝试将 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
的解决方法是:
- 创建一个没有安装 NuGets 的干净的 class 库。
install-package entityframework.core -pre
- 复制
packages.config
的内容,但 不包含 表示EntityFramework.Core
的行
- 在
packages.config
中包含要安装它的行。 update-package -reinstall -projectName YourProjectNameFromStep4
install-package EntityFramework.Core -pre
注意!如果步骤 5 失败,您可以执行以下操作:
install-package System.Collections.Concurrent -version 4.0.0 -projectName YourProjectNameFromStep4
install-package System.Runtime -version 4.0.0 -projectName YourProjectNameFromStep4
在 步骤 6 安装成功后,可以删除这些:
uninstall-package System.Collections.Concurrent -projectName YourProjectNameFromStep4
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 版本。