互いに重複しているいくつかの項目を含む 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 の出力にすべての項目が含まれていますが、項目の連結値に対して Message タスクが 1 回しか実行されていません。だから、これは私が望んでいるものではありません。
5> FIRST VERSION USING ItemGroup ...
5> foo;bar;baz;foo;baz;baz
2番目のバージョンでは、必要に応じてメッセージタスクを数回実行していますが、重複を削除しています。これはやりたくないことです。
5> SECOND VERSION USING Batching and Metadata ...
5> someprefix;foo;somesuffix
5> someprefix;bar;somesuffix
5> someprefix;baz;somesuffix
私がやりたいことは根本的に不可能ですか (その場合、おそらく私のタスクのために PowerShell に切り替える時が来ました)、それを行うための合理的な方法はありますか?
(私の実際のタスクでは、項目は ReadLinesFromFile から取得され、さまざまな処理の後、最終的には WriteLinesToFile になります。重複した行が発生した場合を除いて、正常に動作します)