RemoveDuplicates task
Removes duplicate items from the specified item collection.
Parameters
The following table describes the parameters of the RemoveDuplicates
task.
Parameter | Description |
---|---|
Filtered |
Optional ITaskItem[] output parameter.Contains an item collection with all duplicate items removed. The order of the input items is preserved, keeping the first instance of each duplicate item. |
HadAnyDuplicates |
Optional Boolean output parameter.If true duplicate items were found, false otherwise. |
Inputs |
Optional ITaskItem[] parameter.The item collection to remove duplicate items from. |
Remarks
This task is case insensitive and does not compare item metadata when determining duplicates.
In addition to the parameters listed above, this task inherits parameters from the TaskExtension class, which itself inherits from the Task class. For a list of these additional parameters and their descriptions, see TaskExtension base class.
Example
The following example uses the RemoveDuplicates
task to remove duplicate items from the MyItems
item collection. When the task is complete, the FilteredItems
item collection contains one item.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MyItems Include="MyFile.cs"/>
<MyItems Include="MyFile.cs">
<Culture>fr</Culture>
</MyItems>
<MyItems Include="myfile.cs"/>
</ItemGroup>
<Target Name="RemoveDuplicateItems">
<RemoveDuplicates
Inputs="@(MyItems)">
<Output
TaskParameter="Filtered"
ItemName="FilteredItems"/>
</RemoveDuplicates>
</Target>
</Project>
The following example shows that the RemoveDuplicates
task preserves its input order. When the task is complete, the FilteredItems
item collection contains the items MyFile2.cs, MyFile1.cs, and MyFile3.cs in that order.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MyItems Include="MyFile2.cs"/>
<MyItems Include="MyFile1.cs" />
<MyItems Include="MyFile3.cs" />
<MyItems Include="myfile1.cs"/>
</ItemGroup>
<Target Name="RemoveDuplicateItems">
<RemoveDuplicates
Inputs="@(MyItems)">
<Output
TaskParameter="Filtered"
ItemName="FilteredItems"/>
<Output
TaskParameter="HadAnyDuplicates"
PropertyName="_HadAnyDuplicates"/>
</RemoveDuplicates>
</Target>
</Project>