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

Sha*_*tin 5 versioning asp.net semantic-versioning .net-standard

.NET Standard规定了所有.NET平台必须实现的API.它的版本规则是什么?难道breaking.adding,在其中1.4增加并保持向下兼容1.3,而2.x不是向下兼容1.x?

文档不清楚.一些Microsoft文档表明纯向后兼容性:

给定.NET标准库版本,您可以使用针对相同或更低版本的库.(重点补充)

现在2.0已经出局,上面似乎不正确.话虽如此,发布博客帖子说:

从面向.NET Standard的库中,如果它们的版本低于或等于您要定位的版本,您将能够引用[.NET目标] .NET Standard .(重点补充)

同一博客文章自相矛盾:

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

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

Imm*_*rth 7

我在.NET Standard的On.NET剧集中对此进行了更详细的解释.

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

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

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

欲了解更多详情,请阅读部分.NET标准2.0重大更改:添加的.NET Framework 4.6.1的兼容性在.NET的标准我的博客文章.

更新.经过很多社区反馈,我们决定不再进行这种突破性变革.有关此决定的更多详细信息,请参阅.NET标准常见问题解答.