我们的组织已使用dotnet Core 2.2 SDK构建了.Net标准2.0 dll。该库使用Microsoft.Extensions.Options.ConfigurationExtensions,它们需要与SDK相同的版本。该库编译良好,所以我们有一个netstandard 2.0库,对吧?
我们的组织后来意识到dotnet Core 2.2现在已不再受支持,但没有时间立即返回并修复所有库以将它们移回dotnet Core支持的版本2.1。它们是netstandard 2.0,所以没事吧?
我们正在基于受支持的asp.net Core 2.1构建一个新的asp.net项目,当尝试使用该库时,由于编译问题,我们发现我们必须升级到2.2。我在这里想念什么吗? netstandard dll不应该独立于用于创建它的基础SDK吗?
NU1107: Version conflict detected for Microsoft.Extensions.Configuration.
Install/reference Microsoft.Extensions.Configuration 2.2.0 directly to project MyAspNet to
resolve this issue.
MyAspNet -> MyNetStandard 1.5.4 ->
Microsoft.Extensions.Options.ConfigurationExtensions 2.2.0 ->
Microsoft.Extensions.Configuration.Binder 2.2.0 ->
Microsoft.Extensions.Configuration (>= 2.2.0)
MyAspNet -> Microsoft.AspNetCore.App 2.1.1 ->
Microsoft.Extensions.Configuration (>= 2.1.1 && < 2.2.0).
问题实际上与.Net标准或SDK无关。确实,问题出在Microsoft.Extensions.Configuration (>=2.1.1 && <2.2.0)
的ASP.Net Core 2.1依赖项约束。通过引用以下库来解决版本冲突确实允许应用程序编译。但是此解决方案依赖于.Net Core 2.2.0 DLL,ASP.Net 2.1可能会或可能不会或无法支持DLL。
Microsoft.Extensions.Options.ConfigurationExtensions = 2.20
Microsoft.Extensions.DependencyInjection.Abstractions = 2.20
Microsoft.Extensions.Configuration.Binder = 2.20
Microsoft.Extensions.Configuration = 2.20
Microsoft.Extensions.Configuration.Abstractions = 2.20
Microsoft.Extensions.Primitives = 2.20
鉴于.Net Core 3.1已经推出了很短的时间,并且看起来各个库仍需要更新(例如,Microsoft.Extensions.Options.ConfigurationExtensions的最新版本是3.0),这可能并不是一个好的选择。时间。仍然可以选择使用ASP.Net 2.2(现在已不受支持)掷骰子,或者将私有库移回具有.Net Core 2.1依赖项。