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

如何正确使用negative globbing清理构建构件中的多余无效文件

解决方案

仅调整CopyFiles@2任务的glob规则即可解决多余文件问题,无需额外PowerShell任务:

核心问题分析

  • 第二个复制任务的glob规则存在逻辑错误:当前!(packages.config|phantomjs-license.txt)规则会匹配Project123目录下除这两个文件外的所有内容,大量项目源码、编译中间文件都是通过该规则被误复制到构件目录的
  • 第一个复制任务的bin/**全量匹配会将目录下所有pdb调试文件、xml注释文件、无用依赖dll一并复制,需要补充排除规则

修改后YAML配置

steps:
- task: CopyFiles@2
  displayName: 'Copy 发布站点文件到构件 staging 目录'
  inputs:
    SourceFolder: '$(Build.ArtifactStagingDirectory)/_PublishedWebsites/Project123'
    Contents: |
      assets/**
      bin/**
      # 排除bin目录下的调试文件、注释文件,可按需添加无用dll的排除规则
      !bin/**/*.pdb
      !bin/**/*.xml
      Content/**
      Scripts/**
      Views/**
      *.config
      *.asax
      *.ico
      *.txt
      # 可按需添加根目录下多余文件的排除规则,如!*.xml
    TargetFolder: '$(Build.ArtifactStagingDirectory)'
  condition: succeededOrFailed()
  
steps:
- task: CopyFiles@2
  displayName: '复制 Bundles 目录到构件 staging 目录'
  inputs:
    SourceFolder: Project123
    Contents: |
      # 仅匹配需要的Bundles目录,不要写全局匹配规则
      Bundles/**
      # 如果你确实需要根目录下除指定txt外的其他文件,再在此处单独添加包含规则,不要用全局!规则
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

steps:
- task: ArchiveFiles@2
  displayName: 'Archive $(Build.ArtifactStagingDirectory)'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'
    includeRootFolder: false
    verbose: true
    
steps:
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: Release'
  inputs:
    ArtifactName: Release

补充说明

Azure DevOps的glob规则遵循从上到下顺序匹配的逻辑,排除规则必须放在对应包含规则的之后才能生效。如果还有其他特定后缀的多余文件需要排除,按照上述格式新增!路径/规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 20:36:03