我有一个 ItemGroup,其中包含一些相互重复的项目。我想对 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>
在我上面的示例中,FIRST VERSION 输出包含所有项目,但仅对项目的连接值执行了一次消息任务。所以这根本不是我想要的。
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 来完成我的任务了),还是有一些合理的方法可以做到这一点?
(在我的实际任务中,Items 来自 ReadLinesFromFile,经过各种处理,最终会出现在 WriteLinesToFile 中。它工作正常,除非遇到重复行)