我们使用 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/