Visualizzare un elenco di elementi separati da virgole
Quando si lavora con gli elenchi di elementi in Microsoft Build Engine (MSBuild), a volte è utile visualizzare il contenuto di tali elenchi di elementi in modo facile da leggere. In alternativa, si potrebbe usare un attività che accetta un elenco di elementi separati da una stringa di separazione speciale. In entrambi i casi, è possibile specificare una stringa di separazione per un elenco di elementi.
Separare gli elementi in un elenco con virgole
Per impostazione predefinita, MSBuild usa punti e virgola per separare gli elementi in un elenco. Si consideri ad esempio un elemento Message
con il valore seguente:
<Message Text="This is my list of TXT files: @(TXTFile)"/>
Quando l'elenco di elementi @(TXTFile)
contiene gli elementi App1.txt, App2.txt e App3.txt, il messaggio è:
This is my list of TXT files: App1.txt;App2.txt;App3.txt
Se si vuole modificare il comportamento predefinito, è possibile specificare un separatore personalizzato. La sintassi per specificare un separatore per un elenco di elementi è:
@(ItemListName, '<separator>')
Il separatore può essere un singolo carattere o una stringa e deve essere racchiuso tra virgolette singole.
Per inserire una virgola e uno spazio tra gli elementi
Usare una notazione simile alla seguente:
@(TXTFile, ', ')
Esempio
In questo esempio l'attività Exec esegue lo strumento findstr per trovare le stringhe di testo specificate nel file Phrases.txt. Nel comando findstr le stringhe di ricerca letterali sono indicate dall'opzione /c:, pertanto il separatore di elementi /c:
viene inserito tra gli elementi nell'elenco di elementi @(Phrase)
.
Per questo esempio, la riga di comando equivalente è:
findstr /i /c:hello /c:world /c:msbuild phrases.txt
<Project DefaultTargets = "Find"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<ItemGroup>
<Phrase Include="hello"/>
<Phrase Include="world"/>
<Phrase Include="msbuild"/>
</ItemGroup>
<Target Name = "Find">
<!-- Find some strings in a file -->
<Exec Command="findstr /i /c:@(Phrase, ' /c:') phrases.txt"/>
</Target>
</Project>