You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否用单个VSBuild/VSTest任务实现多构建平台编译与测试?

解答

无法使用单个VSBuild或VSTest任务覆盖多个构建平台(或构建配置)。可以在YAML中统一配置通用参数(比如configuration、maximumCpuCount这类重复设置),但仍需为每个平台创建单独的构建和测试任务。


问题详情

我当前正尝试创建Azure DevOps CI流水线,针对不同构建平台(x64、x86、Any CPU)构建.NET和C++项目,并使用MSTest与CppUnitTestFramework进行测试。

当前YAML流水线包含以下编译和测试任务:

- task: VSBuild@1
  displayName: Build x86 - Release
  inputs:
    solution: 'Solution.sln'
    platform: 'x86'
    configuration: 'Release'
    maximumCpuCount: true
    msbuildArchitecture: 'x64'
    logFileVerbosity: minimal

- task: VSTest@2
  displayName: Test Any CPU - Release
  inputs:
    testAssemblyVer2: |
      **\*Test.dll
    searchFolder: '$(Build.SourcesDirectory)\Bin\AnyCPU\Release'
    runInParallel: true
    runTestsInIsolation: true

- task: VSTest@2
  displayName: Test x86 - Release
    inputs:
      testAssemblyVer2: |
        **\*Test.dll
      searchFolder: '$(Build.SourcesDirectory)\Bin\Win32\Release'
      runInParallel: true
      runTestsInIsolation: true

- task: VSBuild@1
  displayName: Build x64 - Release
  inputs:
    solution: 'Solution.sln'
    platform: 'x64'
    configuration: 'Release'
    maximumCpuCount: true
    msbuildArchitecture: 'x64'
    logFileVerbosity: minimal

- task: VSTest@2
  displayName: Test x64 - Release
  inputs:
    testAssemblyVer2: |
      **\*Test.dll
    searchFolder: '$(Build.SourcesDirectory)\Bin\x64\Release'
    runInParallel: true
    runTestsInIsolation: true

我希望尽量减少任务数量,认为可通过更简洁的方式实现相同效果,预期的YAML如下(修改了searchFolder路径以获取所有构建平台子目录):

- task: VSBuild@1
  displayName: Build - Release
  inputs:
    solution: 'Solution.sln'
    configuration: 'Release'
    maximumCpuCount: true
    msbuildArchitecture: 'x64'
    logFileVerbosity: minimal

- task: VSTest@2
  displayName: Test - Release
  inputs:
    testAssemblyVer2: |
      **\*Test.dll
    searchFolder: '$(Build.SourcesDirectory)\Bin'
    runInParallel: true
    runTestsInIsolation: true

我曾尝试保留两个编译任务并合并三个测试任务,但部分测试成功、多数失败,而分开执行时所有测试均成功。

我的疑问:

  • 能否编写一个编译任务,覆盖所有构建平台(x64、x86、Any CPU)?
  • 能否编写一个测试任务,测试所有构建平台的DLL文件?
  • 若其中一项或两项无法实现,原因是什么?是否意味着上述原始YAML是最简洁的实现方式?

内容的提问来源于stack exchange,提问作者Huadara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 21:27:05