如果我已经安装了最新版本的.NET Core Runtime(到目前为止,该版本为2.2.3):
https://dotnet.microsoft.com/download/dotnet-core/2.2
该安装是否与.NET Core的先前版本向后兼容?
例如,上述安装是否与针对以下应用的应用兼容:
我认识到.NET运行时可以并排安装。但是,这不能回答我的问题。 2.2版的安装是否向后兼容以前的版本,从而不需要额外的运行时?
答案 0 :(得分:1)
如果您定位到2.0,则一些用法示例演示了该行为:
请参考以下Microsoft文档中的链接 Microsoft Link
答案 1 :(得分:0)
是的。通过安装.NET Core Runtime 2.2.3,您可以运行针对netcoreapp2.0,netcoreapp2.1和netcoreapp2.2的应用程序,而无需安装其他运行时。
.... NET Core运行时更新在主要版本中兼容 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 Core 2.1”是指.NET Core运行时版本号。的 .NET Core Runtime具有主要/次要/补丁程序版本控制功能, 遵循语义版本控制。
换句话说,.NET Core运行时版本遵循Semantic Versioning方案:
[主要]。[次要]。[补丁]
位置:
因此,上述问题的答案基于语义版本控制:
基于此了解,在构建/发布/还原.NET Core应用程序时,它们将针对主要发行版和功能集,如运行时名称中的主要/次要版本号所示。因此, netcoreapp2.2 与 netcoreapp2.1 向后兼容,而 netcoreapp2.1 向后兼容。但是所有都与 netcoreapp1.x 或 netcoreapp3.x 不兼容。
通过安装.NET Core 2.1.5运行时,并假设依赖于框架的发布部署,您将能够运行定位以下应用程序:
但不是:
如果安装了多个运行时,则根据安装了最高补丁程序的最新运行时来选择确切的运行时。
SDK不基于语义版本控制。但是,每个SDK都针对最大的.NET Core运行时,并支持其之前的每个版本。
这意味着,如果要针对多个运行时进行构建(即使可以),则无需在构建服务器上安装多个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的生产服务器上-无需其他运行时(或SDK)
希望这对其他人有帮助