tfs - 如何在小型匹配模式中同时使用 NOT 和 OR 进行过滤?

标签 tfs tfsbuild glob minimatch

我们使用 TFS 2017 和复制文件构建步骤将构建结果的特定文件复制到另一个目录。具体来说,我们只希望复制 *.dll 和 *.exe,而不复制 *.Tests.dll 或 *.resources.dll。

构建步骤支持 minimatch 模式来过滤文件,但我无法让它应用两个过滤器。

该模式如下所示:

bin\**\?(*.exe|*.dll)
bin\**\!(*.Tests.dll|*.resources.dll)

文件夹内容例如是:

bin\Yes.dll
bin\Yes.exe
bin\No.Tests.dll
bin\No\Some.resources.dll

这些模式似乎是按顺序应用的,因此它们都是单独工作的,而不是相继应用的。

我尝试过类似的事情

bin\**\?(*.exe|*.dll)!(*.Tests.dll|*.resources.dll)

但这也不起作用并且没有过滤任何内容。我可以以某种方式将它们合并到一个过滤器中吗? docs不要涵盖这种情况。

最佳答案

好吧,看来你实际上可以将表达式直接放在另一个表达式之后,过滤器必须更严格。这有效,但我仍然不知道为什么:

bin\**\!(*.Tests.dll|*.resources.dll|*.pdb|*.xml|*.manifest)?(*.exe|*.dll)

关于tfs - 如何在小型匹配模式中同时使用 NOT 和 OR 进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44537875/

相关文章:

tfs - VSO Build vNext - 获取 TFS 修订号

git - 将正则表达式语法转换为 glob(从 Mercurial 切换到 Git)

TFS 2012 - 控制面板中的 Web 访问选项卡丢失

json - TFS API - WIQL - 查询只返回 id 和 url

azure - TFS预览: How do I setup a hosted build controller

TFS2015 构建 : "One or more of the steps defined in the build does not have an associated task definition"

java - 在 Java 6 中使用通配符解析绝对路径

自定义 shell glob 问题

git - 在 libgit2sharp 中使用 TFS PAT 授权

tfs - 有没有一种方法可以像 GitHub 那样在 Azure DevOps 上托管二进制文件?