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

问题描述

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

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

现在,我有如下所示的 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\5.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 的运行时版本。

enter image description here

如何强制 Visual Studio 生成面向运行时版本 DLL 而不是 5.0.2 运行时的 5.0.3

解决方法

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

RuntimeFrameworkVersion 元素会覆盖默认版本政策。对于自包含部署,RuntimeFrameworkVersion 指定确切的运行时框架版本。对于依赖于框架的应用程序,RuntimeFrameworkVersion 指定所需的最低运行时框架版本。

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

<RuntimeFrameworkVersion>5.0.2</RuntimeFrameworkVersion>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...