Visual Studio运行测试时重复构建未修改项目及xUnit加载错误求助
解决方案:不必要的项目重建与xUnit测试适配器加载失败问题
一、仅运行测试不触发构建的设置
Visual Studio GUI操作
- 在测试资源管理器中,右键选中要运行的测试/测试集合,选择「运行选中的测试(不构建)」。
- 调整全局构建行为:打开「工具>选项>项目和解决方案>生成并运行」,将「运行时,当项目过期时」设置为「从不构建」,同时保持「运行时仅生成启动项目及依赖项」开启状态。
命令行方式
使用dotnet test命令时添加--no-build参数,直接跳过构建步骤运行测试:
dotnet test --no-build
排查不必要重建的根源
若开启上述设置仍触发重建,需检查以下几点:
- 确认项目中所有文件的
CopyToOutputDirectory均为PreserveNewest,无文件被设为Always。 - 检查MSBuild自定义目标:若项目包含自定义构建脚本,确认是否存在强制触发重建的逻辑(如总是修改输出文件时间戳)。
- 验证项目依赖:确保测试项目仅依赖必要的生产项目,无冗余引用导致连锁构建。
二、xUnit测试适配器加载失败的解决方法
针对错误Failed to load extensions from file ‘C:\Users\monit\nuget\packages\xunit.runner.visualstudio\2.5.0\build\net6.0\xunit.runner.visualstudio.dotnetcore.testadapter.dll’,尝试以下额外排查步骤:
- 适配版本兼容性:
- 确认当前Visual Studio版本与xUnit.runner.visualstudio 2.5.0兼容,可尝试降级到2.4.5或升级到2.5.1版本测试。
- 确保测试项目中
xunit、xunit.runner.visualstudio、xunit.assert等包版本完全一致,避免版本不匹配。
- 手动修复项目引用:
在测试项目的.csproj文件中,手动添加或修正xUnit适配器的引用配置:<PackageReference Include="xunit.runner.visualstudio" Version="2.5.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> - 清理测试缓存:
删除Visual Studio测试缓存目录%TEMP%\VisualStudioTestExplorerExtensions下的所有文件,重启VS后重新运行测试。 - 排查第三方干扰:
禁用Visual Studio的第三方扩展(如Resharper、CodeRush等),测试是否由扩展冲突导致加载失败。 - 文件权限验证:
确认目标DLL文件存在且当前用户拥有读取权限,排查杀毒软件是否拦截该文件的访问。
内容的提问来源于stack exchange,提问作者Nițu
相关产品推荐
相关产品推荐

