Procedura: visualizzare un elenco di elementi separati da virgole
Quando si utilizzano elenchi di elementi in Microsoft Build Engine (MSBuild), può risultare utile visualizzarne i contenuti in modo da agevolare la lettura. Potrebbe inoltre essere presente un'attività che dispone di un elenco di elementi separati da una speciale stringa di separazione. In entrambi i casi, per tali elenchi è possibile specificare una stringa di separazione.
Separazione degli elementi di un elenco con virgole
Per impostazione predefinita, in MSBuild vengono utilizzati 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)"/>
Se l'elenco di elementi @(TXTFile) contiene gli elementi App1.txt, App2.txt e App3.txt, il messaggio sarà:
This is my list of TXT files: App1.txt;App2.txt;App3.txt
Se si desidera modificare il comportamento predefinito, è possibile specificare un separatore personalizzato. La sintassi utilizzata per specificare il separatore di un elenco di elementi è la seguente:
@(ItemListName, '<separator>')
Il separatore può essere un unico carattere o una stringa e deve essere racchiuso tra virgolette singole.
Per inserire una virgola e uno spazio tra gli elementi
Utilizzare una notazione di elemento simile alla seguente:
@(TXTFile, ', ')
Esempio
In questo esempio, l'attività Exec esegue lo strumento findstr per trovare stringhe di testo specificate nel file Phrases.txt. Nel comando findstr le stringhe di ricerca letterali vengono indicate dall'opzione /c:, pertanto il separatore di elementi /c: viene inserito tra gli elementi nell'elenco di elementi @(Phrase).
In questo caso il comando della riga di comando equivalente è il seguente:
findstr /i /c:hello /c:world /c:msbuild phrases.txt
<Project DefaultTargets = "Find"
xmlns="https://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>