使用微软新版Docker镜像执行dotnet test命令失败的解决方案咨询
问题原因
dotnet build 和 dotnet publish 仅用到 SDK 的编译能力,.NET SDK 天然支持向下编译低版本目标框架,因此即便用5.0 SDK也能正常构建面向netcoreapp2.0和dotnetstandard2.0的项目。但dotnet test需要实际启动测试进程运行编译后的测试代码,你的测试项目目标框架是netcoreapp2.0,默认会要求对应版本的.NET Core运行时环境,而5.0 SDK镜像中仅预装了5.0版本的运行时,就会报找不到2.0运行时的错误。
无需安装2.0 SDK的解决方案
方案1:直接在测试命令中指定滚动策略
执行dotnet test时添加滚动参数即可,无需修改任何项目代码:dotnet test --roll-forward LatestMajor该参数会让测试进程优先使用当前设备上已安装的更高主版本运行时兼容执行旧版本测试代码,适配性最佳,改动量最小。
方案2:给测试项目配置默认滚动策略
在测试项目的根目录新增runtimeconfig.template.json文件,写入以下内容:{ "runtimeOptions": { "rollForward": "LatestMajor" } }配置后所有环境执行该项目的测试时都会自动应用滚动策略,无需每次加参数。
方案3:测试项目多目标框架适配
修改测试项目的.csproj文件,将TargetFramework节点改为TargetFrameworks,新增5.0目标框架:<TargetFrameworks>netcoreapp2.0;netcoreapp5.0</TargetFrameworks>测试时指定使用5.0版本执行即可:
dotnet test --framework netcoreapp5.0
内容的提问来源于stack exchange,提问作者R10t--
相关产品推荐
相关产品推荐

