The following code example creates a new item collection named MySourceItemsWithMetadata from the item collection MySourceItems. The CreateItem task populates the new item collection with the items in the MySourceItems item collection that contain MyAddMetadata values of true. It then adds an additional metadata entry named MyMetadata with a value of Hello to each item in the new collection.
After the task is executed, the MySourceItemsWithMetadata item collection contains the items file1.resx and file3.resx, both with metadata entries for MyAddMetadata and MyMetadata. The MySourceItems item collection is unchanged.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MySourceItems Include="file1.resx;file3.resx">
<MyAddMetadata>true</MyAddMetadata>
</MySourceItems>
<MySourceItems Include="file2.resx">
<MyAddMetadata>false</MyAddMetadata>
</MySourceItems>
</ItemGroup>
<PropertyGroup>
<MyValue>Hello</MyValue>
</PropertyGroup>
<Target Name="NewItems">
<CreateItem
Include="@(MySourceItems)"
Condition="'%(MyAddMetadata)'=='true'"
AdditionalMetadata="MyMetadata=$(MyValue)">
<Output
TaskParameter="Include"
ItemName="MySourceItemsWithMetadata"/>
</CreateItem>
</Target>
</Project> The following table describes the value of the output item after task execution. Item metadata is shown in parenthesis after the item.
|
Item collection
|
Contents
|
| MySourceItemsWithMetadata | file1.resx (MyMetadata="Hello") file3.resx (MyMetadata="Hello") |