Item 要素 (MSBuild)
ユーザー定義のアイテムおよびそのメタデータが含まれます。 MSBuild プロジェクトで使用されるすべてのアイテムが、ItemGroup 要素の子として指定されている必要があります。
<Project>
<ItemGroup>
<Item>
<Item Include="*.cs"
Exclude="MyFile.cs"
Remove="RemoveFile.cs"
Condition="'String A'=='String B'" >
<ItemMetadata1>...</ItemMetadata1>
<ItemMetadata2>...</ItemMetadata2>
</Item>
属性および要素
以降のセクションでは、属性、子要素、および親要素について説明します。
属性
属性 |
説明 |
---|---|
Include |
必須の属性です。 アイテムの一覧に含めるファイルまたはワイルドカードです。 |
Exclude |
省略可能な属性です。 アイテムの一覧から除外するファイルまたはワイルドカードです。 |
Condition |
省略可能な属性です。 評価する条件です。 詳細については、「MSBuild の条件」を参照してください。 |
Remove |
省略可能な属性です。 アイテムの一覧から削除するファイルまたはワイルドカードです。 この属性は、Target 内にある ItemGroup のアイテムに指定されている場合にのみ有効です。 |
KeepMetadata |
省略可能な属性です。 ターゲット アイテムに追加するソース アイテムのメタデータ。 名前がセミコロン区切りのリストで指定されているメタデータのみ、ソース アイテムからターゲット アイテムに転送されます。 詳細については、「MSBuild 項目」を参照してください。 この属性は、Target 内にある ItemGroup のアイテムに指定されている場合にのみ有効です。 |
RemoveMetadata |
省略可能な属性です。 ターゲット アイテムに転送しないソース アイテムのメタデータ。 名前がセミコロン区切りの名前リストに含まれているメタデータを除いて、すべてのメタデータがソース アイテムからターゲット アイテムに転送されます。 詳細については、「MSBuild 項目」を参照してください。 この属性は、Target 内にある ItemGroup のアイテムに指定されている場合にのみ有効です。 |
KeepDuplicates |
省略可能な属性です。 既存のアイテムの完全な複製である場合に、アイテムをターゲット グループに追加するかどうかを指定します。 ソースとターゲットのアイテムの Include 値が同じでメタデータが異なる場合、KeepDuplicates が false に設定されていてもアイテムは追加されます。 詳細については、「MSBuild 項目」を参照してください。 この属性は、Target 内にある ItemGroup のアイテムに指定されている場合にのみ有効です。 |
子要素
要素 |
説明 |
---|---|
アイテム メタデータ値を含むユーザー定義のアイテム メタデータ キーです。 1 つのアイテムに 0 個以上の ItemMetadata 要素を含めることができます。 |
親要素
要素 |
説明 |
---|---|
アイテムをグループ化するための要素です。 |
解説
Item 要素はビルド システムへの入力を定義し、ユーザー定義のコレクション名に基づいてアイテム コレクションにグループ化されます。 これらのアイテム コレクションは、タスクのパラメーターとして使用できます。タスクは、コレクション内の個々のアイテムを使用してビルド処理の各ステップを実行します。 詳細については、「MSBuild 項目」を参照してください。
@(myType) という表記を使用すると、myType 型のアイテムのコレクションをセミコロン区切りの文字列リストに展開して、パラメーターに渡すことができます。 パラメーターが string 型の場合は、パラメーターの値がセミコロンで区切られた要素のリストになります。 パラメーターが文字列の配列の場合 (string[])、各要素はセミコロンの位置に基づいて配列に挿入されます。 タスク パラメーターが ITaskItem[] 型の場合、値は、アイテム コレクションの内容と、アタッチされているすべてのメタデータになります。 セミコロン以外の文字を使用して各アイテムを区切るには、@(myType, 'separator') 構文を使用します。
MSBuild エンジンでは、* や ? などのワイルドカードや、/**/*.cs などの再帰的なワイルドカードを評価できます。 詳細については、「MSBuild 項目」を参照してください。
使用例
次のコード例は、CSFile 型の 2 つのアイテムを宣言する方法を示しています。 2 番目に宣言されているアイテムには、MyMetadata が HelloWorld に設定されたメタデータが含まれています。
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>