.NET Core Sdk 是否向后兼容以前的版本?

Is .NET Core Sdk backwards compatible with previous releases?

我有点困惑。我发现这个 是用于运行时的。 它还针对 SDK 并表示:

  1. Edit .NET Core 3.x SDK has been released. Unlike v2.2 and the previous releases before it, this version does not support the ability to target previous runtimes (i.e. netcoreapp2.2, netcoreapp2.1, etc)

  2. That means, you do not need to install more than one SDK on your build server if you want to build against multiple runtimes (even though you could).

但我可以使用 global.js 和 dotnet sdk 6 来定位 dotnetcore 3 应用程序。

对我来说好像只需要最新的SDK就可以构建之前的所有,对吧?

如果是这样,那是如何实现的,是否每个新的 SDK 都包含所有其他的?或者ms(听说Java也是一样的)是怎么实现向后兼容的?

这里有一些不同的东西在起作用。

global.json 让您 select 使用哪个 SDK。如果您安装了多个 SDK,则不是要定位哪一个(运行次),而是要使用哪个 SDK。

到 select 运行 时间目标,使用 .csproj 文件中的 TargetFramework 元素。例如,<TargetFramework>netcoreapp3.1</TargetFramework>

最新版本的 SDK 可让您定位更早的 运行 时代。 6.0 SDK 可以让您毫无问题地瞄准 3.1 运行时间。

不过,多个版本的 SDK 可能会生成不同的代码或执行不同的操作,从而破坏您的应用程序。使用匹配的 SDK 和运行时可能是最安全的选择。

如果您正处于开发过程中(例如,dotnet build)或已经构建了一个依赖于框架的应用程序(一个非自包含且需要 .NET 运行时才能运行的应用程序),您将需要将匹配的 运行time 安装到 运行 应用程序。新的 SDK 没有旧的 运行时间。

对于所有其他(独立的)应用程序,运行时的所有版本(当前和旧版本)都可以作为 nuget 包使用。 SDK 将它们拉下来并在构建您的应用程序时使用它们。