如何检查字符串包含msbuild中的字符串?

How to check string contains a string in msbuild?

我在为我的 vcxproj 项目编写 targets 文件时遇到问题。 在我的 targets 文件中,我首先要根据配置设置一些构建属性,所以我有这个:

  <Choose>
    <When Condition="$(Configuration.Contains('Debug', StringComparison.OrdinalIgnoreCase))">
      <PropertyGroup>
      </PropertyGroup>
    </When>
  </Choose>

但是当我尝试用导入的目标文件打开项目时出现错误

error  : The expression ""Debug".Contains(Debug, StringComparison.OrdinalIgnoreCase)" cannot be evaluated. Method 'System.String.Contains' not found.

我正在使用 Visual Studio 2022 预览版。 根据 MSBuild docs 字符串只是一个 .Net5 字符串,应该有方法。 有人可以帮我吗?

Contains 的重载仅在最近的 .Net 版本中可用,例如在4.8 所以这就是找不到它的原因。解决方法:转换为更低然后比较

<Choose>
  <When Condition="$(Configuration.ToLowerInvariant().Contains('debug'))">
  </When>
</Choose>