Item 元素 (MSBuild)
包含用户定义的项和其元数据。 MSBuild 项目中使用的每一个项都必须被指定为 ItemGroup 元素的子元素。
<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 中的项指定该属性时,该属性才有效。 |
子元素
元素 |
描述 |
---|---|
用户定义的包含项元数据值的项元数据键。 项中可能没有或有一些 ItemMetadata 元素。 |
父元素
元素 |
描述 |
---|---|
为项进行元素分组。 |
备注
Item 元素定义输入到生成系统的输入,并且根据其用户定义的集合名被分组到项集合。 可将这些项集合用作任务的参数,这些任务使用集合中的各个项来执行生成过程的步骤。 有关详细信息,请参阅MSBuild 项。
使用符号 @(myType) 可使类型 myType 的项的集合扩展为以分号分隔的字符串列表,并将传递给参数。 如果参数的类型为 string,则参数的值是以分号分隔的元素列表。 如果此参数是一个字符串数组 (string[]),则根据分号的位置将每个元素插入到数组中。 如果任务参数的类型为 ITaskItem[],则值是项集合的内容以及附加的任何元数据。 如需通过使用分号之外的其他字符来分隔每个项,请使用语法 @(myType, '分隔符')。
MSBuild 引擎能够计算通配符(如 * 和 ?)和递归通配符(如 /**/*.cs)。 有关详细信息,请参阅MSBuild 项。
示例
以下代码示例演示如何声明类型 CSFile 的两个项。 第二个声明项包含将 MyMetadata 设置为 HelloWorld 的元数据。
<ItemGroup>
<CSFile Include="engine.cs; form.cs" />
<CSFile Include="main.cs" >
<MyMetadata>HelloWorld</MyMetadata>
</CSFile>
</ItemGroup>