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

Azure DevOps CI/CD新手:CopyFile任务因源文件夹未找到失败

解决Azure DevOps中CopyFiles任务找不到源文件夹的问题

嘿,我来帮你搞定这个问题!从你给出的错误信息来看,核心问题出在变量的大小写敏感以及MSBuild参数的格式上,咱们一步步来修正:

问题根源

你看到的错误##[error]Unhandled: Not found SourceFolder: D:\a\r1\a\$(build.artifactStagingDirectory),说明系统没有把$(build.artifactStagingDirectory)当成预定义变量解析,而是直接把它作为字符串拼到了路径里——这是因为Azure DevOps的预定义变量是大小写敏感的,正确的变量名是$(Build.ArtifactStagingDirectory)(首字母大写),小写的build系统识别不出来。

另外,你MSBuild参数里的PackageLocation="$(build.artifactStagingDirectory)"用了双引号包裹变量,在YAML的单引号字符串里可能会干扰变量解析,也需要调整。

修正后的YAML配置

1. 修正MSBuild任务的参数

把msbuildArgs里的变量改成大写,同时去掉PackageLocation的双引号:

msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=$(Build.ArtifactStagingDirectory)'

2. 修正CopyFiles任务的SourceFolder

把小写的$(build.artifactStagingDirectory)替换成正确的大写变量:

- task: CopyFiles@2
  displayName: 'Copy Files to: $(Build.ArtifactStagingDirectory)/deploy'
  inputs:
    SourceFolder: '$(Build.ArtifactStagingDirectory)'
    TargetFolder: '$(Build.ArtifactStagingDirectory)/deploy'

额外验证小技巧

如果你不确定变量是否正确解析,可以在管道里加一个PowerShell任务打印变量值,提前排查问题:

- task: PowerShell@2
  displayName: 'Verify Artifact Path'
  inputs:
    targetType: 'inline'
    script: 'Write-Host "Artifact Staging Directory path: $(Build.ArtifactStagingDirectory)"'

运行管道后,查看这个任务的日志,就能确认变量是否被正确替换成实际路径了。

内容的提问来源于stack exchange,提问作者Muhammad Arslan Jamshaid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:51:43