Поделиться через


RemoveDuplicates - задача

Удаляет повторяющиеся элементы из указанной коллекции элементов.

Параметры

В следующей таблице приводятся параметры задачи RemoveDuplicates.

Параметр Описание
Filtered Необязательный выходной параметр ITaskItem[] .

Содержит коллекцию элементов, из которой удалены все повторяющиеся элементы. При этом порядок входных элементов остается неизменным и сохраняется первый экземпляр каждого повторяющегося элемента.
HadAnyDuplicates Необязательный выходной параметр Boolean .

Если true найдены повторяющиеся элементы, false в противном случае.
Inputs Необязательный параметр ITaskItem[].

Коллекция элементов, из которой нужно удалить повторяющиеся элементы.

Замечания

Эта задача не учитывает регистр, а также не сравнивает метаданные элементов при определении повторяющихся элементов.

Помимо перечисленных выше параметров, эта задача наследует параметры от класса TaskExtension, который, в свою очередь, наследует от класса Task. Список этих дополнительных параметров и их описания см. в статье Базовый класс TaskExtension.

Пример

В этом примере показано использование задачи RemoveDuplicates для удаления повторяющихся элементов из коллекции элементов MyItems. После завершения задачи коллекция элементов FilteredItems содержит один элемент.

<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>

В примере ниже видно, что в задаче RemoveDuplicates сохраняется порядок входных элементов. По завершении задачи в коллекции элементов FilteredItems содержатся элементы MyFile2.cs, MyFile1.cs и MyFile3.cs в указанном порядке.

<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>

См. также