項目リストをコンマ区切りで表示する

Microsoft Build Engine (MSBuild) で項目一覧を使用するとき、その項目一覧の内容を読みやすいように表示すると便利な場合があります。 あるいは、項目の一覧を特殊な区切り文字列で区切るタスクが与えられることがあります。 いずれの場合でも、項目一覧には区切り文字列を指定できます。

一覧内の項目をコンマで区切る

既定では、MSBuild では一覧内の項目を区切るためにセミコロンが使用されます。 たとえば、次の値を持つ Message 要素があります。

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

@(TXTFile) 項目一覧に項目 App1.txtApp2.txtApp3.txt が含まれるとき、メッセージは次のようになります。

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

既定の動作を変更する場合、独自の区切りを指定できます。 項目一覧区切りを指定するための構文は次のようになります。

@(ItemListName, '<separator>')

区切りは単一の文字か文字列にすることができます。一重引用符で囲む必要があります。

項目の間にコンマとスペースを挿入するには

  • 次のような項目表記を使用します。

    @(TXTFile, ', ')

この例では、Exec タスクは findstr ツールを実行し、ファイル Phrases.txt から指定のテキスト文字列を探します。 findstr コマンドでは、リテラル検索文字列が /c: スイッチによって示されます。そのため、項目区切り /c:@(Phrase) 項目一覧の項目間に挿入されます。

この例では、次がこれに相当するコマンドライン コマンドです。

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>