方法 : 項目のコレクションをコンマ区切りで表示する
更新 : 2007 年 11 月
Microsoft Build Engine (MSBuild) で項目リストを使用する場合、項目リストの内容を見やすく表示したい場合があります。あるいは、項目のリストを特殊な区切り記号文字列で区切って指定しなければならないタスクもあります。どちらの場合も、項目リストに対して区切り記号文字列を指定できます。
リスト項目をセミコロンで区切る
既定では、リスト内の項目が MSBuild によりセミコロンで区切られます。たとえば、次の値を持つ Message 要素があるとします。
<Message Text="This is my list of TXT files: @(TXTFile)"/>
@(TXTFile) 項目リストに App1.txt、App2.txt、App3.txt という項目が含まれる場合、メッセージは次のように表示されます。
This is my list of TXT files: App1.txt;App2.txt;App3.txt
項目をセミコロンで区切るには
次のような項目表記を使用します。
@(TXTFile)
カスタムの区切り記号を指定する
既定の動作は、他の区切り記号を指定することによって変更できます。項目リストの区切り記号を指定するための構文を次に示します。
@(ItemListName, '<separator>')
区切り記号は 1 文字だけでも、文字列でもかまいません。単一引用符で囲んで指定します。
項目間にコンマとスペースを挿入するには
次のような項目表記を使用します。
@(TXTFile, ', ')
使用例
この例では、Exec タスクが findstr ツールを使用して、ファイル Phrases.txt から指定されたテキスト文字列を検索します。findstr コマンドでは、/c: スイッチによってリテラルの検索文字列が指定されているため、項目の区切り記号 /c: が、@(Phrase) 項目リスト内の項目間に挿入されます。
この例は、コマンド ラインから次のようなコマンドを実行することに相当します。
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>