Wyświetlanie listy elementów rozdzielanych przecinkami
Podczas pracy z listami elementów w programie Microsoft Build Engine (MSBuild) czasami warto wyświetlić zawartość tych list elementów w sposób łatwy do odczytania. Możesz też mieć zadanie, które pobiera listę elementów rozdzielonych specjalnym ciągiem separatora. W obu tych przypadkach można określić ciąg separatora dla listy elementów.
Oddzielanie elementów na liście przecinkami
Domyślnie program MSBuild używa średników do oddzielania elementów na liście. Rozważmy na przykład Message
element o następującej wartości:
<Message Text="This is my list of TXT files: @(TXTFile)"/>
@(TXTFile)
Gdy lista elementów zawiera elementy App1.txt, App2.txt i App3.txt, komunikat to:
This is my list of TXT files: App1.txt;App2.txt;App3.txt
Jeśli chcesz zmienić zachowanie domyślne, możesz określić własny separator. Składnia określania separatora listy elementów to:
@(ItemListName, '<separator>')
Separator może być pojedynczym znakiem lub ciągiem i musi być ujęta w pojedynczy cudzysłów.
Aby wstawić przecinek i spację między elementami
Użyj notacji elementów podobnych do następujących:
@(TXTFile, ', ')
Przykład
W tym przykładzie zadanie Exec uruchamia narzędzie findstr, aby znaleźć określone ciągi tekstowe w pliku Phrases.txt. W poleceniu findstr ciągi wyszukiwania literału są wskazywane przez przełącznik /c: , więc separator elementu jest /c:
wstawiany między elementami na @(Phrase)
liście elementów.
W tym przykładzie równoważne polecenie wiersza polecenia to:
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>