У меня есть ItemGroup, которая содержит некоторые элементы, которые являются дубликатами друг друга. Я хотел бы выполнить задачу по модифицированной версии всех элементов в ItemGroup. Но до сих пор я не смог найти способ, который не удаляет дублированные элементы.MSBUILD, работающий с повторяющимися элементами в ItemGroup
Существует ли такое?
<ItemGroup>
<MyMessage Include="foo" />
<MyMessage Include="bar" />
<MyMessage Include="baz" />
<MyMessage Include="foo" />
<MyMessage Include="baz" />
<MyMessage Include="baz" />
</ItemGroup>
<Target Name="DemoBug">
<Message Importance="High" Text="FIRST VERSION USING ItemGroup ..."/>
<Message Importance="High" Text="@(MyMessage)"/>
<Message Importance="High" Text="SECOND VERSION USING Batching and Metadata ..."/>
<Message Importance="High" Text="someprefix;%(MyMessage.Identity);somesuffix"/>
</Target>
В моем примере выше, первый выход версия имеет все элементы в нем, но выполняется только один раз задание сообщений на каскадных значений Items. Так что это совсем не то, чего я хочу.
5> FIRST VERSION USING ItemGroup ...
5> foo;bar;baz;foo;baz;baz
Второй вариант выполнения задачи Сообщение несколько раз, как я хочу, но это лишает дубликаты, которые я не хочу это делать.
5> SECOND VERSION USING Batching and Metadata ...
5> someprefix;foo;somesuffix
5> someprefix;bar;somesuffix
5> someprefix;baz;somesuffix
Это то, что я хочу сделать принципиально невозможно (в этом случае это может быть время, чтобы перейти на PowerShell для моей задачи), или есть какой-то разумный способ сделать это?
(В моей реальной задаче, элементы пришли из ReadLinesFromFile и, после различной обработки, будут в конечном итоге в WriteLinesToFile. Он отлично работает, за исключением того, когда дублированные линии встречаются)
Не похоже. Он правильно не разделяет дубликаты, но он помещает их всех в один проход Message, объединяя элементы – PeteAC
Разве это не то, что вы хотите? Для каждого элемента (включая дубликаты) вы получаете модифицированную версию. Задача Message сглаживается в строку, разделенную ';', но запись в файл должна обрабатывать их в порядке ... Вы также можете использовать другой разделитель, если хотите http://msdn.microsoft.com/en-us/ библиотека/VStudio/ms171476.aspx. – fsimonazzi