【问题标题】:What are the .NET Standard versioning rules?.NET Standard 版本控制规则是什么?
【发布时间】:2017-02-20 08:14:07
【问题描述】:

.NET Standard 规定了所有 .NET 平台都必须实现的 API。它的版本控制规则是什么?是breaking.adding,其中1.4 添加到1.3 并保持向后兼容,而2.x 不向后兼容1.x

文档对此并不清楚。 Some Microsoft docs 表示纯向后兼容:

鉴于 .NET 标准库版本,您可以使用针对相同或更低版本的库。(已添加重点)

现在 2.0 已经发布,上面的内容似乎不正确。话虽如此,the release blog post 说:

从面向 .NET Standard 的库中,您将能够引用 [面向 .NET Standard 的库,如果它们的版本低于或等于您的目标版本。(强调添加)

同一篇博文自相矛盾地说:

为了让 .NET Framework 4.6.1 支持 .NET Standard 2.0,我们必须从 .NET Standard 中删除所有在 .NET Standard 1.5 和 1.6 中引入的 API。

现在 2.0 已经发布,版本控制规则是什么?它似乎是breaking.adding。 MSFT 在哪里记录了这一点?

【问题讨论】:

    标签: asp.net versioning .net-standard semantic-versioning


    【解决方案1】:

    我在On.NET episode on .NET Standard 中对此进行了更详细的解释。

    一般来说,.NET Standard 是这样工作的:

    1. .NET Standard 将线性版本化,目的是不在版本之间进行重大更改。换句话说,您可以将 .NET Standard 的 API 表面视为同心圆,其中更高版本有更多 API。
    2. .NET 平台的特定版本将实现 .NET Standard 的特定版本。
    3. 在选择 .NET Standard 版本作为目标时,请考虑以下权衡:
      • 版本号越高,可以使用的 API 越多
      • 版本号越低,.NET 平台支持的越多

    那么为什么要讨论突破性的变化呢?简短的回答是因为我们在定义 .NET Standard 1.x 时犯了一个错误,并且没有考虑平台范围。您应该忽略 .NET Standard 1.5 和 1.6 并避免依赖它们。如果你这样做,.NET Standard 2.0 就是 .NET Standard 1.4 的严格超集。

    有关更多详细信息,请阅读my blog post on .NET Standard 中的.NET Standard 2.0 重大更改:添加 .NET Framework 4.6.1 兼容性部分。

    更新。经过大量社区反馈后,我们决定不执行此重大更改。 .NET Standard FAQ 中列出了有关此决定的更多详细信息。

    【讨论】:

      猜你喜欢
      • 2020-09-20
      • 2019-05-22
      • 2018-03-26
      • 1970-01-01
      • 1970-01-01
      • 2016-06-01
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      相关资源
      最近更新 更多