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

Msbuild 如何检查属性中是否存在字符串,msbuild,Msbuild,如果我有财产 <PropertyGroup> <MyProp>abd;efg;hij;klm</MyProp> </PropertyGroup> abd;efg;hij;荷航 如何解析$(MyProp)以检查是否存在klm?您可以使用调用字符串Contains()方法来检查字符串的出现情况。虽然也可以使用项(通过Include=“$(MyProp)”并检查是否存在具有预期标识的项)的其他一些选项,但使用属性函数的条件可以在目标内外的任何m

如果我有财产

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

abd;efg;hij;荷航
如何解析
$(MyProp)
以检查是否存在
klm

您可以使用调用字符串
Contains()
方法来检查字符串的出现情况。虽然也可以使用项(通过
Include=“$(MyProp)”
并检查是否存在具有预期标识的项)的其他一些选项,但使用属性函数的条件可以在目标内外的任何msbuild元素上使用

例如:

<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>

abd;efg;hij;荷航
;$(MyProp);
第二种方法-前置和追加
并检查
;荷航-确保列表中的字符串作为一个整体匹配,可以处理
;aklm