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

如何从多个项目构建单个Azure DevOps工件并解决语法问题

修正后的YAML配置及说明

核心语法修正:projects参数的正确写法

你之前的projects参数用逗号分隔多个字符串不符合YAML语法规范,正确写法是使用YAML数组格式,每个项目路径单独一行并以-开头,也可以用方括号包裹的单行数组。


方案1:合并所有项目输出为目录形式的工件

该方案将所有项目的发布文件直接合并到同一个目录,最终工件是包含所有文件的目录:

steps:
- task: DotNetCoreCLI@2
  displayName: 'Build Front-End'
  inputs:
    command: 'build'
    projects:
      - '**/FirstUIProject.csproj'
      - '**/SecondUIProject.csproj'
      - '**/NthUIProject.csproj'
    arguments: '--configuration $(buildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: 'Publish Front-End Projects'
  inputs:
    command: 'publish'
    publishWebProjects: False
    projects:
      - '**/FirstUIProject.csproj'
      - '**/SecondUIProject.csproj'
      - '**/NthUIProject.csproj'
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/UI'
    zipAfterPublish: False # 关闭单个项目自动打包,让所有文件合并到UI目录

- task: PublishBuildArtifacts@1
  displayName: 'Publishing UI Artifact'
  inputs:
    pathtoPublish: '$(Build.ArtifactStagingDirectory)/UI'
    artifactName: 'UI Build Artifact'

方案2:合并所有项目输出为单个ZIP包

如果需要把所有内容打包成单个ZIP文件作为工件,可添加ArchiveFiles任务:

steps:
- task: DotNetCoreCLI@2
  displayName: 'Build Front-End'
  inputs:
    command: 'build'
    projects:
      - '**/FirstUIProject.csproj'
      - '**/SecondUIProject.csproj'
      - '**/NthUIProject.csproj'
    arguments: '--configuration $(buildConfiguration)'

- task: DotNetCoreCLI@2
  displayName: 'Publish Front-End Projects'
  inputs:
    command: 'publish'
    publishWebProjects: False
    projects:
      - '**/FirstUIProject.csproj'
      - '**/SecondUIProject.csproj'
      - '**/NthUIProject.csproj'
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)/UI'
    zipAfterPublish: False # 关闭单个项目打包,先合并文件到统一目录

- task: ArchiveFiles@2
  displayName: 'Combine UI Output into Single ZIP'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)/UI'
    includeRootFolder: False
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/UI_Combined.zip'
    replaceExistingArchive: True

- task: PublishBuildArtifacts@1
  displayName: 'Publishing UI Artifact'
  inputs:
    pathtoPublish: '$(Build.ArtifactStagingDirectory)/UI_Combined.zip'
    artifactName: 'UI Build Artifact'

关键说明

  • zipAfterPublish: False:禁用单个项目自动打包ZIP的功能,确保所有项目的输出文件直接合并到指定的UI目录中。如果保留zipAfterPublish: True,每个项目会生成单独的ZIP包,最终工件目录会包含多个独立ZIP文件。
  • 数组格式的projects参数:YAML会正确识别多个项目路径,任务会依次处理每个项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:13:12