2017-06-14 1 views
0

Wir verwenden TFS 2017 und den Build-Schritt "Datei kopieren", um bestimmte Dateien unseres Build-Ergebnisses in ein anderes Verzeichnis zu kopieren. Insbesondere wollen wir nur * .dll und * .exe kopieren, aber keine * .Tests.dll oder * .resources.dll.Wie kann ich mit NOT und OR in Minimatch-Mustern filtern?

Die Build-Schritt-Unterstützung Minimiert Patterns, um Dateien zu filtern, aber ich kann nicht BOTH-Filter anwenden.

Das Muster sieht wie folgt aus:

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

Der Ordnerinhalt zum Beispiel ist:

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

Es scheint, dass die Muster nacheinander aufgetragen werden, so dass sie beide arbeiten einzeln, aber nicht nach dem anderen .

Ich habe versucht, so etwas wie

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

Aber das entweder und gefiltert nichts funktionierte nicht. Kann ich diese irgendwie zu einem einzigen Filter kombinieren? Die docs decken diesen Fall nicht ab.

Antwort

0

In Ordnung, scheint, Sie können tatsächlich die Ausdrücke direkt nach dem anderen setzen, die Filter müssen nur strenger sein. Das funktioniert, aber ich habe immer noch keine Ahnung warum:

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