首页 > 解决方案 > 检测到依赖约束之外的包版本:Microsoft.AspNetCore.App 2.1.1

问题描述

我正在尝试使用以下方法在我的 API 中安装一些软件包:

Install-Package Microsoft.EntityFrameworkCore.SqlServer

它抛出一个错误(如下所示):

NU1608: Detected package version outside of dependency constraint: Microsoft.AspNetCore.App 2.1.1 requires Microsoft.EntityFrameworkCore.SqlServer (>= 2.1.1 && < 2.2.0) but version Microsoft.EntityFrameworkCore.SqlServer 2.2.0 was resolved.
Install-Package : NU1107: Version conflict detected for 
Microsoft.EntityFrameworkCore. Install/reference Microsoft.EntityFrameworkCore 
2.2.0 directly to project ChinookCoreAPI to resolve this issue. 
 ChinookCoreAPI -> Microsoft.EntityFrameworkCore.SqlServer 2.2.0 -> 
Microsoft.EntityFrameworkCore.Relational 2.2.0 -> 
Microsoft.EntityFrameworkCore (>= 2.2.0) 
 ChinookCoreAPI -> Microsoft.AspNetCore.App 2.1.1 -> 
Microsoft.EntityFrameworkCore (>= 2.1.1 && < 2.2.0).
At line:1 char:1
+ Install-Package Microsoft.EntityFrameworkCore.SqlServer
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManag 
   ement.PowerShellCmdlets.InstallPackageCommand
 
Install-Package : Package restore failed. Rolling back package changes for 
'ChinookCoreAPI'.
At line:1 char:1
+ Install-Package Microsoft.EntityFrameworkCore.SqlServer
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManag 
   ement.PowerShellCmdlets.InstallPackageCommand

有人可以帮我解决这个问题吗?

标签: asp.net-coreasp.net-core-webapi

解决方案


EF Core 和 ASP.NET Core 曾经一起发布。但从 ASP.NET Core 2.x(Microsoft.AspNetCore.App/Microsoft.AspNetCore.App元包)开始,EF Core 现在是 ASP.NET Core 元包的一部分。请参阅ASP.NET Core 2.1 的 Microsoft.AspNetCore.App 元包

然后在 ASP.NET Core 3.0 中,EntityFrameworkCore、JSON.NET 和 Microsoft.CodeAnalysis 将不再是Microsoft.AspNetCore.App/All包的一部分。见GitHub 公告

您遇到了这个问题,因为Install-Package Microsoft.EntityFrameworkCore.SqlServer正在安装最新版本的 EF Core (2.2),而您的 ASP.NET Core 应用程序仍为 2.1。

一种选择是将应用程序升级到 ASP.NET Core 2.2。


但是这里的问题似乎ChinookCoreAPI需要旧版本的 ASP.NET Core(和 EF Core),即 2.1。从您的问题来看,不清楚您是Install-Package Microsoft.EntityFrameworkCore.SqlServer在应用程序项目上还是在ChinookCoreAPI.

如果它在Install-Package Microsoft.EntityFrameworkCore.SqlServerApp 项目上安装最新的 EF Core 应该修复它。否则将版本降低ChinookCoreAPI到 2.1.1


推荐阅读