我应该使用 .NET Core 还是 .NET 5?

Should I use .NET Core or .NET 5?

我将很快开始为我的组织编写一个主要针对 windows 机器的新组件。但是,将来它也可能用于 Linux 系统。

  1. 鉴于 .NET 5 的出现,在 .NET core 中编写它有什么意义吗?
  2. 我在 LTS 中看到 .NET Core 3.1,但不确定 .NET 5。.NET 5 是否处于适合在生产应用程序中使用的状态?
  3. 此外,.NET 标准是否应该在此决策过程中发挥作用?

这里有几件事情在起作用。正如您所说,.Net Core 3.1 是 LTS,而 .Net 5 不是。下一个 LTS 版本将是今年 november/december 的 .Net 6。

基于此,您也许应该使用 .Net Core 3.1,但另一方面,它的支持时间仅比 .Net 5 长约 8 个月,以及从 .Net 5 到 .Net 6 的升级路径可能会更小。因此,您需要根据此自行决定。

您可以在 Microsoft 上查看有关支持政策的更多信息:https://dotnet.microsoft.com/platform/support/policy/dotnet-core

这主要取决于您需要哪些功能以及您的库需要支持哪些目标。

提到的最低目标是 .NET Standard 2.0。这样的库与任何 .NET Core、.NET 5 甚至 .NET Framework 4.8 完全兼容 - 因此为了向后兼容,它是一个不错的选择。 .NET Standard 2.1 不再与 FW 4.8 兼容,但具有许多随 .NET Core 3.1 引入的额外运行时功能,并且与 .NET Core 3.1 向上兼容(包括 .NET 5+)。

但是,您可以直接面向 .NET Core 或 .NET 5。在这些情况下,您的库将使用该版本的 .NET Core 或更高版本。请注意,.NET 5 本质上只是重新命名为 .NET Core,因此它仍然完全兼容。

.NET 5 已准备就绪,只是不是 LTS - 从现在开始,.NET 的偶数版本都将是 LTS,因此 .NET 6、.NET 8 等。新版本将每年发布。如果您想要最新最好的功能,您可以瞄准最新的 .NET。但是您可以针对旧版本并在新版本中继续使用您的库,只要您不需要一些较新的 API,就不会出现任何问题。