2017-08-30 2 views
1

Ce ItemGroup ItemsFromAnotherTarget contient:msbuild ItemGroup exclure ne fonctionne pas avec des jokers

..\..\References\AnotherFolder\ReferencedAssembly.dll 
bin\GeneratedAssembly1.dll 
bin\GeneratedAssembly2.dll 
somefolder\somefile.txt 
somefolder\somefile.exe 
bin\anexe.exe 

L'idée est de générer un autre groupe d'articles BinaryFiles contenant

bin\GeneratedAssembly1.dll 
bin\GeneratedAssembly2.dll 
somefolder\somefile.exe 
bin\anexe.exe 

Je donne les résultats suivants:

<ItemGroup> 
    <BinaryFiles Include="@(ItemsFromAnotherTarget)" Condition="'%(Extension)'=='.dll' or '%(Extension)'=='.exe'" Exclude="..\..\References\AnotherFolder\ReferencedAssembly.dll" /> 
</ItemGroup> 

Cela génère donc le groupe d'articles requis. Mais si nous remplaçons le Exclude par un caractère générique, cela ne fonctionne pas.

Exclude="..\..\**\References\**" 
Exclude="..\..\References\**\*.dll" 
Exclude="..\..\References\**\*" 
None of these work. 

Le problème est le dossier References peut avoir plusieurs dossiers et dll, nous devons exclure toute dossier References. Une idée de comment faire le filtrage en utilisant un caractère générique?

+1

Vous pouvez utiliser la réponse ici: https://stackoverflow.com/questions/35498608/msbuild-how-can-i-exclude-wildcard-paths-matching-a-regex et régler la regex il exclut tout ce qui correspond à \ References \ ou plus. Sinon, vous devrez probablement lister tous les fichiers à exclure, c'est-à-dire , puis filtrer les groupes BinaryFiles en fonction de cette liste. – stijn

+0

Quelle version de msbuild utilisez-vous? –

+0

Microsoft (R) Build Engine version 15.1.1012.6693 – dushyantp

Répondre

2

La seule façon d'exclure le dossier References est par Regex. Il semble une sorte de hacky et toute autre suggestion est la bienvenue.

<ItemGroup> 
    <BinaryFiles Include="@(ItemsFromAnotherTarget)" Condition="(!$([System.Text.RegularExpressions.Regex]::IsMatch('%(Identity)', `.\\References\\.`))) and ('%(Extension)'=='.dll' or '%(Extension)'=='.exe')" /> 
</ItemGroup>