我在本地设置了TFS 2015,我在上一个构建步骤Publish Build Artifacts上遇到了问题。由于某种原因,构建代理似乎正在存档旧的二进制文件,我留下了一个巨大的文件路径:
E:\TFSBuildAgent\_work\1a4e9e55\workspace\application\Development\project\WCF\WCF\obj\Debug\Package\Archive\Content\E_C\TFSBuildAgent\_work\1a4e9e55\workspace\application\Development\project\WCF\WCF\obj\Debug\Package\PackageTmp\bin
我正在使用示例minimatch模式复制文件以开始:
**\bin
我现在只是测试,所以这不是一个永久的解决方案,但我怎么能复制所有二进制文件 箱子 文件夹但不是后代 OBJ?
从研究我认为这应该工作,但它没有(它不匹配任何东西):
**!(obj)**\bin
我在用着 www.globtester.com 去测试。有什么建议么?
另外,我将在稍后讨论归档问题,但如果有人对此有任何指示,请随时发表评论。谢谢
在VSTS中,内置于SDK的URL有两种模式匹配。现在大多数任务都使用 Mini匹配模式如Matt的回答中所述。 但是,有些人使用1.x Agent的Powershell SDK使用的模式。顺便说一句,该格式仍然可以在2.x代理的Powershell SDK中使用。
这意味着有4种任务:
- 1.x代理 - Powershell SDK
- 2.x代理 - 节点SDK
- 2.x代理 - Powershell 1向后兼容性
- 2.x代理 - Powershell 3 SDK - 使用
find-files
- 2.x代理 - Powershell 3 SDK - 使用
find-match
粗体的不是Minimatch,但格式记录在 VSTS任务-SDK的 find-files
方法。
原始问题发布于2015年,此时2.x代理尚未出现。在这种情况下,模式很可能是:
**\bin\$(BuildConfiguration)\**\*;-:**\obj\**
该 -:
排除前面的物品。
根据微软的文档,这里有一个列表
文件匹配模式 您可以使用。最重要的规则是:
匹配 ?
?
匹配文件或目录名称中的任何单个字符(零次或一次)。
匹配 *
要么 +
*
要么 +
匹配文件或目录名称中的零个或多个字符。
匹配 @
标志
与Brackets匹配 (
, )
和 |
- 如果您使用括号
|
它被视为一个 逻辑或,例如 *(hello|world)
意味着“零或更多的问候或世界”
与双星号匹配 **
**
递归通配符。例如, /hello/**/*
匹配所有的后代 /hello
。
排除模式 !
- 领导
!
更改要排除的包含模式的含义。支持交错排除模式。
字符集 [
和 ]
评论 #
逃离
- 包装特殊字符
[]
可用于在文件名中转义文字glob字符。例如文字文件名 hello[a-z]
可以逃脱 hello[[]a-z]
。
例
可以使用以下表达式 内容 的领域 “复制文件” 构建步骤以为Web项目创建部署包:
** \?(的.config |.dll文件| * .sitemap)
** \?(.EXE |.DLL |.PDB |.XML | *的.resx)
** \?(.js文件|的CSS |的.html |的.aspx |的.ascx |的.asax |的.master |.cshtml | * .MAP)
** \?(.gif注意|巴纽|.JPG |.ICO | * .PDF)
注意: 您可能需要添加更多扩展,具体取决于项目的需要。