msbuild - 如何检查属性中是否存在字符串

时间:2017-11-14 19:30:19

标签: msbuild

如果我有财产

<PropertyGroup>
  <MyProp>abd;efg;hij;klm</MyProp>
</PropertyGroup>

如何解析$(MyProp)以检查是否存在klm

1 个答案:

答案 0 :(得分:1)

您可以使用property functions来调用字符串Contains()方法来检查字符串的出现次数。虽然使用Items的一些其他选项(通过Include="$(MyProp)"并检查是否存在具有预期身份的项目)也是可能的,但使用属性函数的条件可以用于任何msbuild元素,包括目标内部和外部。 / p>

示例:

<Project>
  <PropertyGroup>
    <MyProp>abd;efg;hij;klm</MyProp>
  </PropertyGroup>

  <Target Name="Build">
    <Message Importance="high" Text="klm is included!" Condition="$(MyProp.Contains('klm'))" />

    <PropertyGroup>
      <MyProp>;$(MyProp);</MyProp>
    </PropertyGroup>
    <Message Importance="high" Text="exactly klm is included!" Condition="$(MyProp.Contains(';klm;'))" />
  </Target>
</Project>

第二种方法 - 预先添加;并追加;klm; - 确保字符串在列表中作为一个整体匹配,可以处理;aklm