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>