首页 > 解决方案 > 如何检查字符串是否包含msbuild中的字符串?

问题描述

我在为我的项目编写targets文件时遇到问题。vcxproj在我的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 文档,字符串只是一个 .Net5 字符串,应该有方法。有人可以帮我吗?

标签: msbuildvcxproj

解决方案


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

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

推荐阅读