什么是.NET标准版本规则?

时间:2016-10-11 17:29:05

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

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

文档不清楚。 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 1.5和1.6中引入的.NET Standard中的所有API。

现在2.0已经出来了,版本控制规则是什么?它似乎是{{1}}。 MSFT在哪里记录了这一点?

1 个答案:

答案 0 :(得分:6)

我已在On.NET episode on .NET Standard

中详细解释了这一点

通常,这就是.NET Standard的工作方式:

  1. .NET Standard将线性版本,目的是不在版本之间进行重大更改。换句话说,您可以将.NET Standard的API表面视为同心圆,其中更高版本具有更多API。
  2. .NET平台的特定版本将实现特定版本的.NET Standard。
  3. 选择.NET标准版本时,请考虑这种权衡:
    • 版本号越高,您可以使用的API就越多
    • 版本号越低,.NET平台支持的越多
  4. 那么为什么会有关于改变的讨论呢?简短的回答是因为我们在定义.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