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

问题描述 投票:2回答:1

如果我安装了最新版本的.NET Core Runtime(截至目前,版本为2.2.3):

https://dotnet.microsoft.com/download/dotnet-core/2.2

这个安装是否与以前版本的.NET Core向后兼容?

例如,上述安装是否与针对以下内容的应用兼容:

  • netcoreapp1.0
  • netcoreapp2.0
  • netcoreapp2.1
  • netcoreapp2.2

我意识到.NET运行时可以并排安装。但是,这不能回答我的问题。 2.2安装是否与以前的版本向后兼容,因此不需要额外的运行时间?

.net-core asp.net-core-2.1 asp.net-core-1.0
1个回答
3
投票

tldr;

是。通过安装.NET Core Runtime 2.2.3,您可以运行以netcoreapp2.0,netcoreapp2.1和netcoreapp2.2为目标的应用程序,而无需安装额外的运行时。

... NET Core运行时更新在主要版本“band”中兼容,例如1.x和2.x.

(同一主要版本中的次要更新向后兼容)

此外,较新版本的.NET Core SDK通常能够以兼容的方式构建以运行时的早期版本为目标的应用程序

(最新的SDK可以针对以前的运行时)

通常,您只需要应用程序所需的最新SDK和最新补丁版本的运行时。

(一般来说,您只需要安装最新的SDK /运行时)

随着时间的推移,在安装.NET Core运行时和SDK的更新版本时,您可能希望从计算机中删除过时的.NET Core版本。删除旧版本的运行时可能会更改为运行共享框架应用程序而选择的运行时

(随着时间的推移并排安装其他SDK /运行时,您应该偶尔删除旧版本,以支持最新版本)

资料来源:https://docs.microsoft.com/en-us/dotnet/core/versions/remove-runtime-sdk-versions?tabs=windows

.NET核心版本控制

根据文件:

“.NET Core 2.1”是指.NET Core Runtime版本号。 .NET Core Runtime有一个主要/次要/补丁方法来进行语义版本控制之后的版本控制。

换句话说,.NET Core运行时版本遵循Semantic Versioning方案:

[主要]。[次要]。[贴剂]

哪里:

  • 主要升级引入了重大变化
  • 次要升级是功能升级,与之前的次要版本向后兼容
  • 补丁升级通常是对现有功能的错误修复或安全补丁(也向后兼容以前的次要版本)

因此,上述问题的答案基于语义版本控制:

  • 主要升级与以前的主要版本不向后兼容
  • 次要和/或补丁升级在同一版本中向后兼容

基于这种理解,当构建/发布/恢复.NET Core应用程序时,它们将针对主要版本和功能集,如运行时名称中的主要/次要版本号所示。因此,netcoreapp2.2向后兼容netcoreapp2.1,而netcoreapp2.1又与netcoreapp2.0向后兼容。但所有这些都与netcoreapp1.x或netcoreapp3.x不兼容。

通过一次安装.NET Core 2.1.5运行时,并假设依赖于框架的发布部署,您将能够运行应用程序定位:

  • netcoreapp2.0
  • netcoreapp2.1

但不是:

  • netcoreapp1.0(不兼容)
  • netcoreapp2.2(不支持)

如果安装了多个运行时,则根据安装了最高补丁的最新运行时选择确切的运行时。

关于SDK

SDK不基于语义版本控制。但是,每个SDK都针对最大的.NET Core Runtime,并支持之前的每个版本。

这意味着,如果要针对多个运行时构建(即使可以),则不需要在构建服务器上安装多个SDK。 SDK已经包含了在当前版本(或任何先前版本)上开箱即用的构建应用程序所需的所有运行时。例如,如果安装.NET Core 2.2.105 SDK,则可以构建netcoreapp1.0,netcoreapp2.0,netcoreapp2.1或netcoreapp2.2。但是你不能为.NET Core 2.3或3.0构建。

一个例子

假设我有一个构建服务器,它安装了最新的.NET Core SDK(SDK 2.2.105 - 2.2.3 Runtime)。

虽然安装了SDK 2.2.105,但我可能想要构建和发布.NET Core 2.1应用程序:

dotnet publish 
     /p:Configuration=Release -r win-x64 --self-contained false
     /p:IsWebConfigTransformDisabled=true --framework netcoreapp2.1
     /p:DebugSymbols=false /p:DebugType=None
  • /p:Configuration=Release - 配置发布
  • -r win-x64 - 目标Windows部署(而不是便携式)
  • --self-contained false - 依赖于框架的部署(需要在主机上安装运行时)
  • /p:IsWebConfigTransformDisabled=true - 不要转换web.config以避免使用Visual Studio生成的默认web.config出错(从2.1迁移到2.2时可能需要)
  • --framework netcoreapp2.1 - 显式地定位运行时框架
  • /p:DebugSymbols=false /p:DebugType=None - 禁用.PDB文件

这个版本可以安装在具有最新运行时.NET Core Runtime + Hosting Bundle 2.2.3的Production服务器上 - 不需要其他运行时(或SDK)

希望这有助于其他人

© www.soinside.com 2019 - 2024. All rights reserved.