[英]TFS drop, exclude obj folder using minimatch pattern
我正在本地设置 TFS 2015,但在我的最后一个构建步骤“发布构建工件”中遇到了问题。 出于某种原因,构建代理似乎正在归档旧的二进制文件,而我留下了一个巨大的文件路径:
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
我目前只是在测试,所以这不是一个永久的解决方案,但我如何复制bin文件夹中的所有二进制文件但不是obj的后代?
从研究中我认为这应该有效,但它没有(它不匹配任何东西):
**!(obj)**\bin
我正在使用www.globtester.com进行测试。 有什么建议?
另外,我稍后会研究归档问题,但如果有人对此有任何指示,请随时发表评论。 谢谢
在 VSTS 中,SDK 中内置的 URL 有两种模式匹配。 现在大多数任务都使用马特的回答中描述的Minimatch 模式。 但是,有些使用 1.x 代理的 Powershell SDK 使用的模式。 顺便说一下,该格式在 2.x Agent 的 Powershell SDK 中仍然可用。
所以这意味着有 5 种任务:
find-files
find-match
粗体的不是 Minimatch ,而是VSTS-Task-SDK 的find-files
方法中记录的格式。
最初的问题是在 2015 年发布的,当时 2.x 代理还没有出现。 在这种情况下,模式很可能是:
**\bin\$(BuildConfiguration)\**\*;-:**\obj\**
-:
从它前面的项目中排除项目。
根据 Microsoft 的文档,这里是您可以使用的文件匹配模式列表。 最重要的规则是:
?
?
匹配文件或目录名称中的任何单个字符(零次或一次)。*
或+
匹配*
或+
匹配文件或目录名称中的零个或多个字符。@
符号匹配@
匹配一次。(
, )
和|
匹配|
括号它被视为逻辑 OR ,例如*(hello|world)
表示“hello 或 world 出现零次或多次”**
**
递归通配符。 例如, /hello/**/*
匹配/hello
所有后代。!
排除模式!
将包含模式的含义更改为排除。 支持交错排除模式。[
和]
字符集[]
匹配文件或目录名称中的一组或一系列字符。#
评论#
开头的模式被视为注释。[]
包装特殊字符可用于转义文件名中的文字 glob 字符。 例如,文字文件名hello[az]
可以转义为hello[[]az]
。可以在“复制文件”构建步骤的Contents字段中使用以下表达式为 Web 项目创建部署包:
**\\?( .config| .dll|*.sitemap)
**\\?(. exe| .dll| .pdb| .xml|*.resx)
**\\?( .js| .css| .html| .aspx| .ascx| .asax| .Master| .cshtml|*.map)
**\\?( .gif| .png| .jpg| .ico|*.pdf)
注意:您可能需要添加更多扩展,具体取决于您的项目需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.