2011-09-29 11 views
13

Questo dovrebbe essere semplice, ma non riesco a trovare come farlo (o forse non è possibile).Come si esegue un test condizione MSBuild se un ItemGroup contiene un elemento?

In MSBuild ho un gruppo articoli che è un elenco di file. Voglio eseguire un task solo se un particolare file è in quella ItemGroup

Qualcosa di simile:

<Copy Condition="@(Files) <contains> C:\MyFile.txt" .... /> 

Un modo per fare questo? Preferibilmente senza scrivere un'attività personalizzata.

Modifica: L'elenco dei file ha a che fare solo con la condizione. Altrimenti non ha alcuna relazione con il compito.

risposta

14

Prova

<Copy Condition="'%(Files.Identity)' == 'C:\MyFile.txt'" .. />

+0

Sì, questo dovrebbe funzionare. % lo renderà "iterato" attraverso tutti i file esistenti ... equivale a: ecc ... –

+0

Forse ho frainteso questo, ma in realtà voglio solo eseguire la copia una volta, e quello che sto copiando non è nella lista dei file, è qualcosa di diverso. L'elenco dei file è solo per la condizione – Ray

+3

Esso itererà attraverso più batch, ma l'attività di copia verrà eseguita solo una volta, quando la condizione è vera. @ (File) non deve essere il set di file che stai copiando, lo stiamo usando qui solo per assicurarci di eseguire questa operazione di Copia solo se "C: \ MyFile.txt" è presente in @ (File) . – radical

Problemi correlati