无法在 ASP.NET Core Web App 中更改生成的 DLL 的运行时版本

Can't change runtime version of produced DLL in ASP.NET Core Web App

我正在为 REST API 构建一个基于 .NET 5 的 ASP.NET Web 应用程序。目前它是一个 POC。我的托管服务提供商仅支持 5.0.2 运行 时间,但 SDK 版本附带安装了 VS2019 .NET 5.0.103 (runtime 5.0.3)。我需要生成目标为 运行time 5.0.2.

的 DLL

为了能够生成 运行 时间 5.0.2 的 DLL,我安装了 .NET SDK version 5.0.102。现在我有 SDK 和 运行time.

现在,我有如下 SDK 和运行时 (dotnet --info)

.NET SDKs installed:
  5.0.102 [C:\Program Files\dotnet\sdk]
  5.0.103 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 5.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]

我试图通过 global.json 文件强制使用早期版本。我将文件放在 csproj 文件所在的文件夹中。内容如下:

{
  "sdk": {
    "version": "5.0.102"
  }
}

dotnet --versiondotnet --info 也报告正在使用的 SDK 是 5.0.102 如果 运行 来自项目目录的这些命令。

D:\Projects-DriveD\VS\AspNetCoreWebSample\AspNetCoreWebSample>dotnet --version
5.0.102

D:\Projects-DriveD\VS\AspNetCoreWebSample\AspNetCoreWebSample>dotnet --info
.NET SDK (reflecting any global.json):
 Version:   5.0.102
 Commit:    71365b4d42

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19042
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk.0.102\

Host (useful for support):
  Version: 5.0.3  <==========================================
  Commit:  c636bbdc8a

.NET SDKs installed:
  5.0.102 [C:\Program Files\dotnet\sdk]
  5.0.103 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 5.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]

但即便如此,生成的 DLL 也是针对 运行 时间版本 5.0.3。我认为问题可能是因为主机版本仍然是 5.0.3 但我不完全确定。

我正在使用 Jetbrains dotpeek 工具验证生成的 DLL 的 运行time 版本。

如何强制 Visual Studio 生成针对 运行time 版本 5.0.2 而不是 5.0.3 运行time 的 DLL

来自官方文档Select the .NET version to use :

The RuntimeFrameworkVersion element overrides the default version policy. For self-contained deployments, the RuntimeFrameworkVersion specifies the exact runtime framework version. For framework-dependent applications, the RuntimeFrameworkVersion specifies the minimum required runtime framework version.

在您的 csproj 中,您可以添加:

<RuntimeFrameworkVersion>5.0.2</RuntimeFrameworkVersion>