Azure Pipeline执行dotnet test遇testhost文件锁定问题求助
解决Azure Pipeline中dotnet test的MSB3026文件锁定问题
你遇到的是testhost进程占用测试依赖DLL导致的文件复制失败问题,以下是可行的解决办法:
1. 禁用测试并行执行
默认情况下dotnet test会并行运行测试,容易引发文件锁定。修改测试命令,添加--no-parallel参数:
dotnet test --no-parallel
也可以通过.runsettings文件控制并行度,示例配置:
<RunSettings> <RunConfiguration> <MaxCpuCount>1</MaxCpuCount> </RunConfiguration> </RunSettings>
执行测试时指定该文件:dotnet test --settings .runsettings
2. 测试前清理构建输出目录
在dotnet test任务前添加清理命令,确保输出目录无残留文件和占用进程:
dotnet clean
3. 升级Test Platform相关NuGet包
你当前使用的microsoft.testplatform.objectmodel 16.9.4版本与.NET 5存在兼容性问题,建议升级到17.x系列版本。可以在项目的.csproj文件中指定更高版本的Microsoft.NET.Test.Sdk:
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
4. 分离构建与测试步骤
在Azure Pipeline中拆分任务:先单独执行构建,再执行测试并跳过构建步骤,避免两个步骤同时访问输出目录:
- 构建任务:
dotnet build - 测试任务:
dotnet test --no-build
5. 强制终止残留testhost进程
在测试任务前添加PowerShell脚本,杀掉所有可能残留的testhost进程:
Get-Process -Name testhost -ErrorAction SilentlyContinue | Stop-Process -Force
内容的提问来源于stack exchange,提问作者nielcleo
相关产品推荐
相关产品推荐

