Azure DevOps Copy Files任务重复嵌套添加目标文件夹名问题
Azure DevOps Copy Files任务路径套娃问题的原因与解决办法
问题原因
你遇到的套娃式复制,本质是源文件夹和目标文件夹的范围重叠:
- 你的Copy Files任务源路径包含了目标文件夹
Dist(比如源路径设为项目根目录),而Dist又处于源路径的目录结构内。 - 第一次复制完成后,
Dist目录下生成了新文件;任务的文件匹配规则(Contents)会将这些新文件纳入扫描范围,进而把Dist里的文件再复制到Dist\Dist,循环往复形成嵌套路径。
解决办法
1. 缩小源范围,排除目标文件夹
- 直接将源路径指定为需要复制的具体目录,比如
$(Build.SourcesDirectory)\App_Code,只扫描原始目标文件所在的目录。 - 若需保留源路径为项目根目录,在Contents配置项中添加排除规则:
!**/Dist/**,让任务跳过已生成的Dist文件夹。
2. 将目标文件夹移至源范围外
把目标路径设置到项目源码目录之外的位置,比如构建工件暂存目录:
$(Build.ArtifactStagingDirectory)\Dist
新生成的文件不在源路径的扫描范围内,自然不会被重复复制。
3. 检查任务是否被重复触发
确认Pipeline中没有重复调用该Copy Files任务,比如避免在循环步骤、多阶段/作业中重复执行它。
日志佐证
从你提供的执行日志能清晰看到问题特征:
2023-06-15T21:50:00.0844284Z Copying D:\GIS\agent02_work\605\s\App_Code\app.config to Dist\App_Code\app.config...
2023-06-15T21:50:00.5103537Z Copying D:\GIS\agent02_work\605\s\Dist\App_Code\app.config to Dist\Dist\App_Code\app.config...
第一次复制是从原始App_Code目录到Dist,第二次则把Dist内的新文件复制到下一层Dist,完全对应源目标路径重叠的问题逻辑。
内容的提问来源于stack exchange,提问作者Lebowski
相关产品推荐
相关产品推荐

