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

从PublishBuildArtifact迁移到PublishPipelineArtifact后无工件生成求助

替换PublishBuildArtifact@1为PublishPipelineArtifact@1后未生成工件的排查方案

我在Azure DevOps管道中构建.NET MAUI应用后发布工件,使用PublishBuildArtifact@1时可正常生成预期工件:

- task: PublishBuildArtifact@1
  displayName: 'Publish Artifact: drop'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/'
    ArtifactName: 'drop'
    publishLocation: 'Container'

替换为弃用推荐的PublishPipelineArtifact@1后,却未生成任何工件:

- task: PublishPipelineArtifact@1
  displayName: 'Publish Artifact: drop'
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/'
    ArtifactName: 'drop'
    artifactType: 'pipeline'

以下是关键排查和修复要点:

  • 移除路径末尾的斜杠
    PublishPipelineArtifact@1与旧任务的路径处理逻辑不同:当路径以/结尾时,任务会尝试发布目录本身而非目录内的内容,最终导致无工件生成。修改targetPath配置:

    targetPath: '$(Build.ArtifactStagingDirectory)'
    
  • 确认构建输出已同步到ArtifactStagingDirectory
    MAUI的构建产物默认不会自动进入$(Build.ArtifactStagingDirectory),需要提前通过CopyFiles任务将输出文件复制到该目录。以Android平台为例:

    - task: CopyFiles@2
      displayName: 'Copy MAUI build outputs to staging directory'
      inputs:
        SourceFolder: '$(ProjectDir)/bin/$(Configuration)/net8.0-android/'
        Contents: '**/*'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
  • 查看任务日志定位问题
    打开管道运行日志,找到PublishPipelineArtifact@1的执行记录,检查是否存在“未找到匹配指定模式的文件”这类提示,确认目标路径存在且包含有效文件。

  • 简化冗余参数
    artifactType: 'pipeline'是PublishPipelineArtifact@1的默认值,可直接省略该参数,避免不必要的配置冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:41:14