Msbuild 属性中的不同/唯一值
假设存在分隔符,是否有方法提取属性中的唯一值。所以如果我有Msbuild 属性中的不同/唯一值,msbuild,Msbuild,假设存在分隔符,是否有方法提取属性中的唯一值。所以如果我有 <PropertyGroup> <Values>foo;bar;bar;foo</Values> </PropertyGroup> 傅;酒吧;酒吧;福 有没有一种方法可以在没有重复值的情况下获取值为“foo;bar”的属性?我知道Item函数Distinct,但还没有找到将其用于属性的方法。下面是一个示例,说明如何使用ItemGroup的Distinct方法并将结果分配回属性:
<PropertyGroup>
<Values>foo;bar;bar;foo</Values>
</PropertyGroup>
傅;酒吧;酒吧;福
有没有一种方法可以在没有重复值的情况下获取值为“foo;bar”的属性?我知道Item函数Distinct,但还没有找到将其用于属性的方法。下面是一个示例,说明如何使用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>
傅;酒吧;酒吧;福
@(ValueGroup->Distinct())
快速解释它是如何工作的。MSBuild的PropertyGroup只能保存单值元素(属性)。ItemGroup类似于列表。因为您需要对值列表进行操作——要提取不同的列表,您需要一个ItemGroup。然后应用
Distinct()
方法并将结果分配给一个新属性,在这里称为
。现在您有了一个属性,该属性包含与原始属性不同的元素。感谢您的回答,它工作得非常好。如果在属性上有类似$(Values->Distinct(“;”)的操作,那就太好了