Afficher une liste d’éléments séparés par des virgules
Lorsque vous travaillez avec des listes d’éléments dans Microsoft Build Engine (MSBuild), il est parfois utile d’afficher le contenu de ces listes d’éléments d’une manière facile à lire. Vous pouvez également avoir une tâche qui accepte une liste d’éléments séparés par une chaîne de séparation particulière. Dans ces deux cas, vous pouvez spécifier une chaîne de séparation pour la liste d’éléments.
Séparer des éléments d’une liste à l’aide de virgules
Par défaut, MSBuild utilise des points-virgules pour séparer les éléments d’une liste. Par exemple, imaginez un élément Message
avec la valeur suivante :
<Message Text="This is my list of TXT files: @(TXTFile)"/>
Quand la liste d’éléments @(TXTFile)
contient les éléments App1.txt, App2.txt et App3.txt, le message est le suivant :
This is my list of TXT files: App1.txt;App2.txt;App3.txt
Si vous souhaitez modifier le comportement par défaut, vous pouvez spécifier votre propre séparateur. La syntaxe à utiliser pour spécifier un séparateur d’éléments de liste est la suivante :
@(ItemListName, '<separator>')
Le séparateur peut être un caractère unique ou une chaîne, et doit être compris entre guillemets simples.
Pour insérer une virgule et un espace entre les éléments
Utilisez une notation d’éléments semblable à celle-ci :
@(TXTFile, ', ')
Exemple
Dans cet exemple, la tâche Exec exécute l’outil findstr pour rechercher des chaînes de texte spécifiées dans le fichier Phrases.txt. Dans la commande findstr, les chaînes de recherche littérales sont indiquées par le commutateur /c:. Ainsi, le séparateur d’éléments /c:
est inséré entre les éléments de la liste @(Phrase)
.
Pour cet exemple, la commande équivalente de ligne de commande est la suivante :
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>