VSTS构建配置:如何从指定文件夹复制文件
只复制特定文件夹内容到Azure DevOps(原VSTS)工件目录的解决方案
你在Azure DevOps(原VSTS)构建流程里遇到的复制范围过广问题很常见——空Contents字段会默认复制整个源代码目录,咱们只要精准配置路径通配符就能搞定。结合你的项目结构,我给你整理了几种实用的配置方案:
1. 复制单个解决方案的编译输出(比如Solution-1的Release版本)
在Copy Files任务的Contents字段填入:
intra-DEV/Project/Solution-1/**/bin/Release/**
**是递归通配符,会匹配Solution-1下所有层级的bin/Release目录,以及里面的所有文件和子文件夹- 如果你的编译是Debug版本,把
Release替换成Debug即可
2. 一次性复制Project下所有解决方案的编译输出
如果想同时复制Solution-1和Solution-2的编译文件,用更宽泛的匹配模式:
intra-DEV/Project/**/bin/Release/**
这个模式会自动覆盖Project目录下所有子文件夹里的bin/Release内容。
3. 仅复制特定类型的文件(比如dll、exe)
要是不想复制pdb、xml这类辅助文件,可以指定具体的文件后缀:
intra-DEV/Project/**/bin/Release/*.dll intra-DEV/Project/**/bin/Release/*.exe
直接在Contents里换行写多个模式就行,每个模式对应一种目标文件类型。
4. 排除不必要的中间目录(比如obj文件夹)
编译生成的obj文件夹属于中间产物,没必要复制,咱们用!前缀来排除:
intra-DEV/Project/**/bin/Release/** !**/obj/**
这样就只会保留bin/Release里的有效输出,自动跳过所有obj目录。
额外小提示:
- 如果你在MSBuild任务里指定了自定义输出目录(比如用
/p:OutDir=$(Build.SourcesDirectory)/MyOutput参数),那Contents直接写MyOutput/**就行,不用再定位bin目录。 Source folder字段可以留空(默认就是$(Build.SourcesDirectory)),要是想缩小源目录范围,也可以填$(Build.SourcesDirectory)/intra-DEV/Project,这样Contents里的路径能更简洁,比如直接写**/bin/Release/**。
按上面的配置调整后,Copy Files任务就只会复制你需要的特定内容,不会再把整个源代码目录都带过去了。
内容的提问来源于stack exchange,提问作者Sreeraj Sree
相关产品推荐
相关产品推荐

