从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
相关产品推荐
相关产品推荐

