如何在Azure Pipeline中强制使用17.3.1版本的Microsoft测试执行命令行工具?
强制在Azure Pipeline中使用17.3.1版Microsoft测试执行命令行工具
针对共享构建代理导致测试工具版本随机切换的问题,提供三种可靠解决方式:
1. 锁定测试项目的NuGet包版本
在所有测试项目的.csproj文件中,显式指定Microsoft.NET.Test.Sdk包版本为17.3.1,这是最直接的绑定方式,不受代理环境影响:
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
提交该修改后,dotnet test会强制使用与该包版本对应的测试执行工具。
2. 在Pipeline中安装指定版本的测试工具
无需修改项目文件,可在Pipeline中单独安装17.3.1版的dotnet-vstest工具,再调用它执行测试:
# 保留原有.NET 6 SDK安装步骤 - task: UseDotNet@2 displayName: 'Use .NET 6' inputs: packageType: 'sdk' version: '6.0.x' # 全局安装17.3.1版vstest工具 - task: DotNetCoreCLI@2 displayName: 'Install fixed vstest version' inputs: command: 'tool' arguments: 'install --global dotnet-vstest --version 17.3.1' # 调用安装好的工具执行测试 - script: vstest.console.exe $(testProjects) --你的测试参数 displayName: 'Run Unit Tests with 17.3.1 vstest'
如果代理环境存在路径问题,可改用dotnet tool run vstest命令调用。
3. 指定绑定对应测试工具的.NET SDK版本
部分.NET 6 SDK版本默认绑定特定版本的测试工具,例如.NET 6.0.404默认搭配17.3.1版测试工具。直接在Pipeline中指定该SDK版本即可:
- task: UseDotNet@2 displayName: 'Use .NET 6 SDK with fixed test tool' inputs: packageType: 'sdk' version: '6.0.404'
可通过微软官方文档或vstest项目的版本对应关系,确认匹配的SDK版本。
背景补充:17.4.0版测试执行工具存在代码覆盖率相关Bug,该问题已在官方仓库被反馈。
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

