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

AzureRmWebAppDeployment找不到PublishArtifacts生成zip文件排查

确认PublishBuildArtifacts输出zip文件名的方法

有三种方式可以拿到准确的输出文件名,同时从根源避免路径匹配错误:

  • 直接查看任务执行日志
    点开对应流水线运行记录中的PublishBuildArtifacts@1任务,展开详细执行日志,日志会逐条列出该任务扫描、上传的所有文件的完整路径与文件名,无需修改流水线即可直接看到实际生成的zip名称。
  • 新增内联任务打印目录结构
    在PublishBuildArtifacts@1任务之前插入一个PowerShell任务,执行命令打印构建暂存目录下的所有文件,运行一次流水线即可在日志中看到完整的文件列表,对应配置片段:
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: Get-ChildItem -Path '$(Build.ArtifactStagingDirectory)' -Recurse | Select-Object FullName, Length
    
  • 核对构建发布步骤的输出规则
    之前.NET5场景下能正常找到s.zip,是因为当时的dotnet publish步骤配置了固定输出文件名;迁移.NET6重建项目后,这部分配置大概率被遗漏,系统会按默认规则生成zip:文件名与发布的项目名一致,如果解决方案下存在多个可发布项目,就会生成多个zip,这也是用*.zip通配符匹配到多个文件的根本原因。
根治路径匹配问题的方案

不要依赖系统自动生成的文件名,直接在dotnet publish步骤固定输出路径,明确指定要发布的目标项目,后续部署步骤引用固定路径即可,不会因为项目结构调整、配置变动出现找不到包、匹配到多个包的问题,参考配置:

# 固定dotnet publish输出路径,明确指定要发布的目标项目
- task: DotNetCoreCLI@2
  inputs:
    command: 'publish'
    projects: '**/你的主Web项目.csproj' # 替换为实际要部署的项目文件路径,避免其他项目生成多余zip
    arguments: '--configuration Release -o $(Build.ArtifactStagingDirectory)/app-publish'
    zipAfterPublish: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/app-publish'
    ArtifactName: 'drop'

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'mySub'
    appType: 'webAppLinux'
    WebAppName: 'myApp'
    packageForLinux: '$(Build.ArtifactStagingDirectory)/app-publish/*.zip'
    RuntimeStack: 'DOTNETCORE|6.0'

注意:不要直接对$(Build.ArtifactStagingDirectory)根目录做通配符匹配,该目录下可能存放构建过程生成的其他压缩包、日志文件,很容易匹配到错误的部署包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:46:07