ユーザー定義の項目とそのメタデータを格納します。 MSBuild プロジェクトで使用されるすべての項目は、 ItemGroup 要素の子として指定する必要があります。
<プロジェクト>
<ItemGroup>
<アイテム>
構文
<Item Include="*.cs"
Exclude="MyFile.cs"
Condition="'String A'=='String B'">
<ItemMetadata1>...</ItemMetadata1>
<ItemMetadata2>...</ItemMetadata2>
</Item>
メタデータを属性として指定する
項目メタデータは、子要素として属性として指定できます。 現在の属性リストと競合しない名前のメタデータは、属性として表現できます。
たとえば、NuGet パッケージの一覧を指定するには、通常、次のような構文を使用します。
<ItemGroup>
<PackageReference Include="Newtonsoft.Json">
<Version>9.0.1-beta1<Version>
</PackageReference>
</ItemGroup>
ただし、次の構文のように、 Version メタデータを属性として渡すことができます。
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />
</ItemGroup>
属性と要素
次のセクションでは、属性、子要素、および親要素について説明します。
Attributes
| 特性 | Description |
|---|---|
Include |
省略可能な属性。 項目の一覧に含めるファイルまたはワイルドカード。 |
Exclude |
省略可能な属性。 項目の一覧から除外するファイルまたはワイルドカード。 |
Condition |
省略可能な属性。 評価する条件。 詳細については、「条件」を参照してください。 |
Remove |
省略可能な属性。 項目の一覧から削除するファイルまたはワイルドカード。 |
MatchOnMetadata |
省略可能な属性。 参照 Remove 項目の値に一致するのではなく、指定したメタデータ名で一致するように他の項目を参照する属性を変更します。 この属性は、他の項目 ( Remove="@(Compile);@(Content)" など) への参照のみを含むRemove属性と共に指定されている場合にのみ有効です。 詳細については、「 アイテム」を参照してください。 |
MatchOnMetadataOptions |
省略可能な属性。MatchOnMetadataで使用される文字列一致戦略を指定します。 設定可能な値は、CaseSensitive、CaseInsensitive、または PathLike です。 既定値は CaseInsensitive です。 |
KeepDuplicates |
省略可能な属性。 既存の項目の正確な複製である場合に、対象グループに項目を追加するかどうかを指定します。 ソースアイテムとターゲットアイテムが同じ Include 値を持ち、メタデータが異なる場合、 KeepDuplicates が falseに設定されている場合でも項目が追加されます。 詳細については、「項目」を参照してください。この属性は、 Target内のItemGroup内の項目に対して指定されている場合にのみ有効です。 |
KeepMetadata |
省略可能な属性。 ターゲット項目に追加するソース項目のメタデータ。 セミコロンで区切られたリストで名前が指定されているメタデータのみが、ソースアイテムからターゲットアイテムに転送されます。 詳細については、「項目」を参照してください。 この属性は、 Target内のItemGroup内の項目に対して指定されている場合にのみ有効です。 |
RemoveMetadata |
省略可能な属性。 ターゲット項目に転送されないソース項目のメタデータ。 名前のセミコロン区切りのリストに名前が含まれているメタデータを除き、すべてのメタデータがソースアイテムからターゲットアイテムに転送されます。 詳細については、「項目」を参照してください。 この属性は、 Target内のItemGroup内の項目に対して指定されている場合にのみ有効です。 |
Update |
省略可能な属性。 (Visual Studio 2017 以降の .NET Core プロジェクトでのみ使用できます)。 アイテムのメタデータを変更できます。通常は、項目のグループが最初に指定された後 (ワイルドカードなど) 後に、特定の項目の既定のメタデータをオーバーライドするために使用されます。 この属性は、 Targetに含まれていないItemGroup内の項目に対して指定されている場合にのみ有効です。 |
子要素
| 要素 | Description |
|---|---|
| ItemMetadata | 項目メタデータ値を含む、ユーザー定義の項目メタデータ キー。 項目に 0 個以上の ItemMetadata 要素がある場合があります。 |
MSBuild は、項目要素の子要素を項目メタデータとして解釈します。
親要素
| 要素 | Description |
|---|---|
| ItemGroup | 項目のグループ化要素。 |
注釈
Item 要素はビルド システムへの入力を定義し、ユーザー定義のコレクション名に基づいて項目コレクションにグループ化されます。 これらの項目コレクションは、ビルド プロセスの手順を実行するためにコレクション内の個々の項目を使用する タスクのパラメーターとして使用できます。 詳細については、「項目」を参照してください。
@(<myType>) という表記を使用すると、 <myType> 型の項目のコレクションをセミコロンで区切られた文字列のリストに展開し、パラメーターに渡すことができます。 パラメーターが string型の場合、パラメーターの値はセミコロンで区切られた要素のリストです。 パラメーターが文字列の配列 (string[]) の場合、各要素はセミコロンの位置に基づいて配列に挿入されます。 タスク パラメーターが ITaskItem[]型の場合、値は、添付されているメタデータと共に項目コレクションの内容になります。 セミコロン以外の文字を使用して各項目を区切る場合は、構文 @(<myType>'<separator>' を使用します。
MSBuild エンジンは、 * や ? などのワイルドカード、 /**/*.cs などの再帰的なワイルドカードを評価できます。 詳細については、「項目」を参照してください。
例示
次のコード例は、 CSFile型の 2 つの項目を宣言する方法を示しています。 2 番目に宣言された項目には、HelloWorldに設定MyMetadataメタデータが含まれています。
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>
次のコード例では、 Update 属性を使用して、glob を介して含まれている somefile.cs というファイル内のメタデータを変更する方法を示します。 (Visual Studio 2017 以降の .NET Core プロジェクトでのみ使用できます)。
<ItemGroup>
<Compile Update="somefile.cs"> // or Update="*.designer.cs"
<MetadataKey>MetadataValue</MetadataKey>
</Compile>
</ItemGroup>
こちらも参照ください
- 項目
- 一般的な MSBuild プロジェクト項目 を する
- MSBuild のプロパティ
- プロジェクト ファイルスキーマリファレンス