有没有一种方法可以提取属性中的唯一值,假设有一些分隔符。所以如果我有
<PropertyGroup>
<Values>foo;bar;bar;foo</Values>
</PropertyGroup>有没有一种方法可以获得一个值为"foo;bar“的属性而不需要重复的值?我知道Item函数Distinct,但还不能想出一种将其用于属性的方法。
发布于 2016-01-11 06:53:42
下面是一个关于如何使用ItemGroup的Distinct方法并将结果分配回属性的示例:
<Project DefaultTargets="TestDistinct" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Values>foo;bar;bar;foo</Values>
</PropertyGroup>
<Target Name="TestDistinct">
<ItemGroup>
<ValueGroup Include="$(Values)"/>
</ItemGroup>
<PropertyGroup>
<DistinctValues>@(ValueGroup->Distinct())</DistinctValues>
</PropertyGroup>
<Message Text="$(DistinctValues)" />
</Target>
</Project>快速解释它是如何工作的。MSBuild的PropertyGroup只能包含单值元素(属性)。ItemGroup类似于列表。由于您需要对值列表进行操作--要提取不同的列表,您需要一个ItemGroup。然后应用Distinct()方法并将结果分配给一个新属性,这里称为<DistinctValues>。现在您有了一个属性,它包含与原始<Values>属性不同的元素。
https://stackoverflow.com/questions/34707714
复制相似问题