我正在为 REST API 构建基于 .NET 5 的 ASP.NET Web 应用程序。目前这是一个概念验证。我的托管提供商仅支持 5.0.2 运行时,但 SDK 版本安装了 .NET 5.0.103(运行时 5.0.3)。我需要生成目标运行时为 5.0.2 的 DLL。
为了能够为运行时 5.0.2 生成 DLL,我安装了 .NET SDK 版本 5.0.102。
现在,我有如下的 SDK 和运行时 (
dotnet --info
):
.NET SDK 安装:
已安装 .NET 运行时:
我尝试使用 global.json 文件强制使用早期版本。我将该文件放在 .csproj 文件所在的文件夹中。内容如下:
{
"sdk": {
"version": "5.0.102"
}
}
如果我从项目目录运行这些命令,dotnet --version
和dotnet --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 的运行时版本。
如何强制 Visual Studio 生成针对运行时版本 5.0.2 而不是 5.0.3 的 DLL?
从官方文档选择要使用的.NET版本:
RuntimeFrameworkVersion 元素会覆盖默认版本策略。对于独立部署,RuntimeFrameworkVersion 指定确切的运行时框架版本。对于依赖于框架的应用程序,RuntimeFrameworkVersion 指定所需的最低运行时框架版本。
在您的csproj中,您可以添加:
<RuntimeFrameworkVersion>5.0.2</RuntimeFrameworkVersion>