.NET 7与.NET 6向后兼容吗?

12

在搜索确认.NET 7是否与.NET 6向后兼容时,我找到了一个微软页面,涵盖了.NET Framework的向后兼容性,但没有找到.NET Core或后续的.NET版本的相关信息。

在搜索引擎上查找相关主题后,我找到了一篇帖子,其中提到.NET 7不向后兼容,并且.NET 6的支持时间将比.NET 7更长。

对我来说,这两个说法都不合理。您能提供一些关于情况的确认吗?


2
关于“支持6比7更长时间”的事情 - 跳过LTS版本在今天变得相当普遍。例如,Node.js和Ubuntu都使用这种模型 - 这意味着某人可以依赖于特定的稳定版本更长时间,而产品本身可以为那些想要新功能的用户继续前进,而无需产品也必须为每个版本提供LTS。 - James Thorpe
3个回答

15
根据这篇文章 - https://learn.microsoft.com/en-us/dotnet/core/compatibility/7.0 - 看起来好像不是这样的,这很合理,因为这是一个主要版本更改。
.NET 7将不会像.NET 6那样得到长时间支持,这是完全不同的问题,因为.NET 6是LTS(长期支持)版本,并且将获得3年的错误和安全修复支持(必须查找)。
然而,.NET 7是一个STS(标准期限支持)版本,仅将获得18个月的支持(在.NET 8发布后的6个月内)。
.NET 8将是一个LTS版本,并将再次获得3年的支持,为.NET 6和.NET 8提供1年的重叠支持。
有关.NET和.NET Core版本的支持生命周期的更多信息,请参见此处:https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core

4

看起来 .NET7 程序可以很好地引用和运行 .NET6 程序集。当我寻找 .NET7 DevExpress 程序集时,我也有同样的问题。它们还不存在,但DevExpress 表示完全支持 .NET7。很遗憾我们无法从 MS 得到明确的答案。但像 DevExpress 这样的供应商与 MS 有“更直接的联系”,所以我的猜测是它实际上是向后兼容的。


1
我认为DevExpress只是一个特例,并不能代表整个SDK的覆盖范围,因此虽然DevExpress可能可行,但并不意味着一切都能正常工作。我链接页面上的图表涵盖了二进制兼容的区域,这些区域将可以正常工作。还有源代码兼容的区域,这意味着需要进行代码更改才能在新版本上编译。总的来说,只有少数几个位是二进制和源代码兼容的,大多数属于其中之一。也有一些根本不兼容的。 - phuzi
1
链接列出了 .Net 7 中的所有破坏性变更。整个 .net 框架中大约有70个这样的变更。我认为大多数源代码和二进制文件都是向后兼容的。 - Rushui Guan
1
但并不是同时,大多数情况下它们是一者而非两者。此外,说.NET框架很令人困惑,因为它已经指代了OG .NET。你应该使用.NET SDK来表示。 - phuzi
我喜欢你的回答,并且发现你在评论中提到的链接很有用。我建议将它作为你回答的一部分。 - undefined
我喜欢你的回答,并且发现你在评论中提到的链接很有用。我建议将它作为你回答的一部分。 - Joshua K

3
从我所了解的情况来看:
你可以使用net7.0作为工具链。然而,将其用作运行时似乎会导致在net6.0目标框架下运行应用程序时出现问题。
我的建议是:
- 如果需要的话,可以使用net7.0作为工具链。 - 将net6.0作为框架目标。 - 在生产环境中使用net6.0作为运行时。 - 如果不想将运行时侧载,可以使用"self-contained"。 - 当net8.0发布后,等待一个月,并同时升级工具链和生产环境中的运行时。

我基本上同意,但根据过去的经验,我会给它超过一个月的时间 :) - Ian
我基本上同意,但根据过去的经验,我会给它超过一个月的时间 :) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接