【问题标题】:Order of precedence for NuGet packages that support multiple target frameworks支持多个目标框架的 NuGet 包的优先顺序
【发布时间】:2020-03-03 07:32:19
【问题描述】:

我有一个支持多个目标框架net45netstandard2.0 的 NuGet 包。目标框架的代码存在差异(条件编译)。

如果我从 .NET Framework 4.6.1 应用程序中引用此包,它似乎会选择 net45 版本而不是 netstandard2.0 版本,尽管它名义上与两者都兼容。

决定此选择的优先规则是什么?为以后的 .NET Framework(4.7.2、4.8、...)构建的应用程序的选择是否相同?

【问题讨论】:

  • “虽然名义上两者都兼容”是不正确的。有一些复杂的情况它必须使用net451,所以包作者依赖于这样的优先顺序。

标签: .net nuget-package .net-standard


【解决方案1】:

如果库有这样的目标,它将选择小于或等于应用程序目标框架的最高匹配目标框架。

如果不存在,它将回退到 netstandard 目标(如果存在)。

否则,库不兼容。

有点令人沮丧的是,文档没有更详细地说明这一点,并且它们没有涵盖更复杂的场景(例如,net461 app,引用 netstandard2.0 libA,进而引用多目标 netstandard2.0,net461 libB - 其中为 libB 解决了框架?)。对于那些你只需要尝试并看到的人。

查看文档,例如 herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2013-07-17
    • 2023-03-14
    • 2018-06-12
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多