Exibir uma lista de itens separada por vírgulas

Quando você trabalha com listas de itens no MSBuild (Microsoft Build Engine), às vezes, é útil exibir o conteúdo dessas listas de itens de uma maneira que seja fácil de ler. Ou, você pode ter uma tarefa que utiliza uma lista de itens separados por uma cadeia de caracteres do separador especial. Em ambos os casos, você pode especificar uma cadeia de caracteres do separador para uma lista de itens.

Separar itens em uma lista com vírgulas

Por padrão, o MSBuild usa ponto e vírgula para separar itens em uma lista. Por exemplo, considere um elemento Message com o seguinte valor:

<Message Text="This is my list of TXT files: @(TXTFile)"/>

Quando a lista de itens @(TXTFile) contém os itens App1.txt, App2.txt e App3.txt, a mensagem é:

This is my list of TXT files: App1.txt;App2.txt;App3.txt

Se você quiser alterar o comportamento padrão, especifique seu próprio separador. A sintaxe para especificar um separador de lista de itens é:

@(ItemListName, '<separator>')

O separador pode ser um único caractere ou uma cadeia de caracteres e deve ser colocado entre aspas.

Para inserir uma vírgula e um espaço entre itens

  • Use a notação de item semelhante ao seguinte:

    @(TXTFile, ', ')

Exemplo

Neste exemplo, a tarefa Exec executa a ferramenta findstr para localizar as cadeias de caracteres de texto especificadas no arquivo Phrases.txt. No comando findstr, cadeias de caracteres de pesquisa literais são indicadas pela opção /c:, portanto, o separador de item, /c: é inserido entre os itens na lista de itens de @(Phrase).

Neste exemplo, a linha de comando equivalente é:

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>