Porady: wyświetlanie listy elementów rozdzielanych przecinkami
Podczas pracy z elementu listy w Microsoft Build Engine (MSBuild), czasami jest przydatne wyświetlić zawartość tych list elementów w sposób, który jest łatwy do odczytania.Lub możesz mieć zadanie, które przyjmuje listę elementów rozdzielone ciąg separatora specjalne.W obu przypadkach można określić ciąg separatora dla elementu listy.
Oddzielając elementy na liście przecinkami
Domyślnie MSBuild używa średników do oddzielenia elementów na liście.Rozważmy na przykład Message element z następujących wartości:
<Message Text="This is my list of TXT files: @(TXTFile)"/>
Gdy @(TXTFile) element listy zawiera elementy, App1.txt, App2.txt i App3.txt, wiadomość jest:
This is my list of TXT files: App1.txt;App2.txt;App3.txt
Jeśli chcesz zmienić domyślne zachowanie można określić własne separatora.Określanie separator listy element składnia jest następująca:
@(ItemListName, '<separator>')
Separator może być pojedynczy znak lub ciąg znaków i musi być ujęte w pojedynczy cudzysłów.
Aby wstawić przecinek i spację między elementami
Notacja przedmiot podobny do następującego:
@(TXTFile, ', ')
Przykład
W tym przykładzie Exec zadanie jest uruchamiane narzędzie findstr, aby znaleźć podane ciągi tekstowe w pliku Phrases.txt.Polecenia findstr ciągów literał wyszukiwania są wskazywane przez /c: przełączyć tak separatora elementu /c: dodaje się między elementami w @(Phrase) elementu listy.
W tym przykładzie jest równoważne polecenia wiersza polecenia:
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>