繁体   English   中英

netstandard 和 dotnet core 的分离

[英]Separation of netstandard and dotnet core

我们的组织使用 dotnet Core 2.2 SDK 构建了一个 .Net 标准 2.0 dll。 该库使用需要与 SDK 相同版本的 Microsoft.Extensions.Options.ConfigurationExtensions。 该库编译良好,所以我们有一个 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 吗?

根据@mason 和@LexLi 的建议,我想我已经找到了自己的答案,更深入地研究了错误。

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 支持。

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 依赖项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM