M1 MacBook版VS2022中NUnit测试用例无法执行如何解决
M1 设备 Visual Studio 2022 运行 NUnit 测试缺失依赖修复方案
报错触发场景
- 设备环境:M1 架构 MacBook,安装 Visual Studio 2022 for Mac
- 项目结构:新建控制台应用 + NUnit 单元测试类库,单元测试项目
TDDSample.UnitTest目标框架为 .NET 6.0.6 - 异常表现:项目可正常构建,运行单元测试时测试宿主进程退出,提示未找到依赖清单中指定的NUnit 3.13.3版本程序集
lib/netstandard2.0/nunit.framework.dll
根因说明
该问题属于ARM架构环境下的兼容异常:
- Visual Studio 2022 for Mac 的测试运行器在Any CPU配置下,存在NuGet依赖路径识别偏差,没有正确将NUnit的netstandard2.0目标程序集复制到测试运行的工作目录
- 部分版本的.NET 6 SDK在M1设备上生成deps.json依赖清单时,对跨目标框架的程序集路径解析存在bug
修复操作
按顺序执行以下操作,每步完成后重新生成项目再验证测试运行状态:
- 清理全链路缓存
关闭Visual Studio,在解决方案根目录删除所有项目下的bin、obj文件夹,终端执行命令清除全局NuGet缓存:
重新打开解决方案后,先执行「还原NuGet包」操作,再重新生成整个解决方案。dotnet nuget locals all --clear - 修正测试项目运行架构
打开TDDSample.UnitTest项目属性,将目标平台从默认的「Any CPU」强制修改为ARM64,保存配置后重新生成。如果仍有异常,可临时开启x86模拟运行选项验证是否为架构识别问题。 - 调整NUnit依赖版本
将NUnit相关NuGet包升级到3.13.3以上的最新稳定版,高版本已针对ARM64架构的路径解析问题做了适配。如果暂时无法升级版本,可手动添加对nunit.framework.dll的显式引用,将该dll的「复制到输出目录」属性设置为「如果较新则复制」。 - 绕过VS测试资源管理器验证
打开终端进入单元测试项目所在目录,直接执行CLI命令运行测试:
如果命令行下测试可正常运行,说明异常来自Visual Studio测试资源管理器的本地缓存,重置VS所有用户设置后重启即可恢复。dotnet test TDDSample.UnitTest.csproj
禁止手动修改构建生成的
TDDSample.UnitTest.deps.json文件,所有手动修改的内容会在下次项目构建时被自动覆盖,无法从根本解决问题。
内容的提问来源于stack exchange,提问作者Kelum
相关产品推荐
相关产品推荐

