Item 要素 (MSBuild)Item Element (MSBuild)

ユーザー定義のアイテムおよびそのメタデータが含まれます。Contains a user-defined item and its metadata. MSBuildMSBuild プロジェクトで使用されるすべてのアイテムが、ItemGroup 要素の子として指定されている必要があります。Every item that is used in a MSBuildMSBuild project must be specified as a child of an ItemGroup element.

<Project><Project>
<ItemGroup><ItemGroup>
<Item><Item>

構文Syntax

<Item Include="*.cs"  
        Exclude="MyFile.cs"  
        Remove="RemoveFile.cs"  
        Condition="'String A'=='String B'" >  
    <ItemMetadata1>...</ItemMetadata1>  
    <ItemMetadata2>...</ItemMetadata2>  
</Item>  

メタデータを属性として指定するSpecify metadata as Attributes

MSBuild 15.1 以降では、現行の属性リストと競合しない名前のメタデータを任意で属性として表現できます。In MSBuild 15.1 or later, any metadata with a name that doesn't conflict with the current list of attributes can optionally be expressed as an attribute.

たとえば、NuGet パッケージの一覧を指定するには、通常、次のような構文を使用します。For example, to specify a list of NuGet packages, you would normally use something like the following syntax.

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json">
    <Version>9.0.1-beta1<Version>
  </PackageReference>
</ItemGroup>

ただし、次の構文のように、Version メタデータを属性として渡すことができます。Now, however, you can pass the Version metadata as an attribute, such as in the following syntax:

<ItemGroup>
  <PackageReference Include="Newtonsoft.Json" Version="9.0.1-beta1" />  
</ItemGroup>

属性および要素Attributes and Elements

以降のセクションでは、属性、子要素、および親要素について説明します。The following sections describe attributes, child elements, and parent elements.

属性Attributes

属性Attribute 説明Description
Include 必須の属性です。Required attribute.

アイテムの一覧に含めるファイルまたはワイルドカードです。The file or wildcard to include in the list of items.
Exclude 省略可能な属性です。Optional attribute.

アイテムの一覧から除外するファイルまたはワイルドカードです。The file or wildcard to exclude from the list of items.
Condition 省略可能な属性です。Optional attribute.

評価する条件です。The condition to be evaluated. 詳細については、条件をご覧ください。For more information, see Conditions.
Remove 省略可能な属性です。Optional attribute.

アイテムの一覧から削除するファイルまたはワイルドカードです。The file or wildcard to remove from the list of items.

KeepDuplicates 省略可能な属性です。Optional attribute.

既存のアイテムの完全な複製である場合に、アイテムをターゲット グループに追加するかどうかを指定します。Specifies whether an item should be added to the target group if it's an exact duplicate of an existing item. ソースとターゲットのアイテムの Include 値が同じでメタデータが異なる場合、KeepDuplicatesfalse に設定されていてもアイテムは追加されます。If the source and target item have the same Include value but different metadata, the item is added even if KeepDuplicates is set to false. 詳細については、「MSBuild 項目」をご覧ください。For more information, see Items.

この属性は、ItemGroup 内にある Target のアイテムに指定されている場合にのみ有効です。This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
KeepMetadata 省略可能な属性です。Optional attribute.

ターゲット アイテムに追加するソース アイテムのメタデータ。The metadata for the source items to add to the target items. 名前がセミコロン区切りのリストで指定されているメタデータのみ、ソース アイテムからターゲット アイテムに転送されます。Only the metadata whose names are specified in the semicolon-delimited list are transferred from a source item to a target item. 詳細については、「MSBuild 項目」をご覧ください。For more information, see Items.

この属性は、ItemGroup 内にある Target のアイテムに指定されている場合にのみ有効です。This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
RemoveMetadata 省略可能な属性です。Optional attribute.

ターゲット アイテムに転送しないソース アイテムのメタデータ。The metadata for the source items to not transfer to the target items. 名前がセミコロン区切りの名前リストに含まれているメタデータを除いて、すべてのメタデータがソース アイテムからターゲット アイテムに転送されます。All metadata is transferred from a source item to a target item except metadata whose names are contained in the semicolon-delimited list of names. 詳細については、「MSBuild 項目」をご覧ください。For more information, see Items.

この属性は、ItemGroup 内にある Target のアイテムに指定されている場合にのみ有効です。This attribute is valid only if it's specified for an item in an ItemGroup that's in a Target.
Update 省略可能な属性です。Optional attribute. (Visual Studio 2017 以降の .NET Core プロジェクトでのみ利用できます。)(Available only for .NET Core projects in Visual Studio 2017 or later.)

glob で追加されたファイルのメタデータを変更できます。Enables you to modify metadata of a file that was included by using a glob.

この属性は、Target にない ItemGroup のアイテムに指定されている場合にのみ有効です。This attribute is valid only if it's specified for an item in an ItemGroup that is not in a Target.

子要素Child Elements

要素Element 説明Description
ItemMetadataItemMetadata アイテム メタデータ値を含むユーザー定義のアイテム メタデータ キーです。A user-defined item metadata key, which contains the item metadata value. 1 つのアイテムに 0 個以上の ItemMetadata 要素を含めることができます。There may be zero or more ItemMetadata elements in an item.

親要素Parent Elements

要素Element 説明Description
ItemGroupItemGroup アイテムの grouping 要素です。Grouping element for items.

コメントRemarks

Item 要素はビルド システムへの入力を定義し、ユーザー定義のコレクション名に基づいてアイテム コレクションにグループ化されます。Item elements define inputs into the build system, and are grouped into item collections based on their user-defined collection names. これらのアイテム コレクションは、タスクのパラメーターとして使用できます。タスクは、コレクション内の個々のアイテムを使用してビルド処理の各ステップを実行します。These item collections can be used as parameters for tasks, which use the individual items in the collections to perform the steps of the build process. 詳細については、「MSBuild 項目」をご覧ください。For more information, see Items.

@(myType) という表記を使用すると、myType 型のアイテムのコレクションをセミコロン区切りの文字列リストに展開して、パラメーターに渡すことができます。Using the notation @(myType) enables a collection of items of type myType to be expanded into a semicolon-delimited list of strings, and passed to a parameter. パラメーターが string 型の場合は、パラメーターの値がセミコロンで区切られた要素のリストになります。If the parameter is of type string, then the value of the parameter is the list of elements, separated by semicolons. パラメーターが文字列の配列の場合 (string[])、各要素はセミコロンの位置に基づいて配列に挿入されます。If the parameter is an array of strings (string[]), then each element is inserted into the array based on the location of the semicolons. タスク パラメーターが ITaskItem[] 型の場合、値は、アイテム コレクションの内容と、アタッチされているすべてのメタデータになります。If the task parameter is of type ITaskItem[], then the value is the contents of the item collection together with any metadata attached. セミコロン以外の文字を使用して各アイテムを区切るには、@(myType, 'separator') 構文を使用します。To delimit each item by using a character other than a semicolon, use the syntax @(myType, 'separator').

MSBuildMSBuild エンジンでは、*? などのワイルドカードや、/**/*.cs などの再帰的なワイルドカードを評価できます。The MSBuildMSBuild engine can evaluate wildcards such as * and ? and recursive wildcards such as /**/*.cs. 詳細については、「MSBuild 項目」をご覧ください。For more information, see Items.

Examples

次のコード例は、CSFile 型の 2 つのアイテムを宣言する方法を示しています。The following code example shows how to declare two items of type CSFile. 2 番目に宣言されているアイテムには、MyMetadataHelloWorld に設定されたメタデータが含まれています。The second declared item contains metadata that has MyMetadata set to HelloWorld.

<ItemGroup>  
    <CSFile Include="engine.cs; form.cs" />  
    <CSFile Include="main.cs" >  
        <MyMetadata>HelloWorld</MyMetadata>  
    </CSFile>  
</ItemGroup>  

次のコード サンプルは、Update 属性を利用し、glob 経由で追加された somefile.cs という名前のファイルのメタデータを修正する方法を示しています。The following code example shows how to use the Update attribute to modify the metadata in a file called somefile.cs that was included via a glob. (Visual Studio 2017 以降の .NET Core プロジェクトでのみ利用できます。)(Available only for .NET Core projects in Visual Studio 2017 or later.)

<ItemGroup>
    <Compile Update="somefile.cs">  // or Update="*.designer.cs"
        <MetadataKey>MetadataValue</MetadataKey>
    </Compile>
</ItemGroup>  

関連項目See Also

項目 Items
MSBuild プロパティ MSBuild Properties
プロジェクト ファイル スキーマ リファレンスProject File Schema Reference