You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已安装.NET 5 SDK 如何运行.NET Core 3.1的测试项目

出现该问题的核心原因是.NET 5 SDK本身支持向下构建低版本.NET Core项目,所以控制台应用可以正常编译;但测试运行时默认会严格匹配测试项目指定的框架版本,因此会找不到3.1运行时报错。

可执行解决方案

方案1:配置运行时前滚策略(最简便,无需修改原有发布逻辑)

让.NET 5运行时兼容执行.NET Core 3.1的测试程序,操作方式三选一即可:

  • 修改测试项目的.csproj文件,在PropertyGroup节点下添加如下配置,修改后重新构建再运行测试:
<RollForward>Major</RollForward>
  • 命令行执行测试时追加参数:
dotnet test --roll-forward Major
  • 若使用VS Code测试插件运行,修改.vscode/settings.json添加如下配置,重启VS Code生效:
"dotnet-test.explorerOptions": ["--roll-forward", "Major"]

方案2:配置手动安装的.NET Core 3.1二进制的识别路径

你之前手动安装的.NET Core 3.1未被识别是因为没有配置对应的用户级环境变量,该操作不需要管理员权限:

  • 找到你手动解压.NET Core 3.1的目录,例如C:\Users\你的用户名\dotnet31
  • 新增当前用户的环境变量DOTNET_ROOT,值为你的.NET 5 SDK安装路径
  • 新增当前用户的环境变量DOTNET_ADDITIONAL_DEPS,值为.NET Core 3.1解压目录下的shared文件夹路径
  • 将.NET Core 3.1的解压目录路径添加到当前用户的PATH环境变量的最顶部
    配置完成后重启VS Code即可识别到手动安装的3.1运行时。

方案3:测试项目多目标框架适配

如果前两种方案不符合你的使用场景,可以修改测试项目的.csproj文件,将单目标框架配置改为多目标:

<!-- 把原来的<TargetFramework>netcoreapp3.1</TargetFramework>替换为下面的配置 -->
<TargetFrameworks>netcoreapp3.1;net5.0</TargetFrameworks>

修改后构建项目会同时生成两个版本的输出,运行测试时会自动选择适配当前环境的net5.0版本执行,不会影响原有面向3.1的发布逻辑。

内容的提问来源于stack exchange,提问作者bngara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 00:21:00