msbuild - 如何检查字符串是否包含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 字符串,应该有方法。有人可以帮我吗?
解决方案
这种重载Contains
仅在最近的.Net 版本中可用,而不是在例如4.8中,所以这就是找不到它的原因。解决方法:转换为较低然后比较
<Choose>
<When Condition="$(Configuration.ToLowerInvariant().Contains('debug'))">
</When>
</Choose>
推荐阅读
- vim - 如何保存缓冲区(最好是如果更改)然后关闭缓冲区而不是 VIM?
- c++ - 使用 c++17 的 clang 诊断发生了奇怪的变化
- reactjs - 反应表单事件
表单输入道具类型 - java - Java左移说明
- r - 在数据框中选择列值部分匹配的行
- sql - 如何从交易表中获取余额
- graphql - 在 GraphQL 参数化查询中使用 ID
- sql - 我怎样才能把这个pl/sql变成一个过程
- java - 线程“main”java.lang.Error 中的异常:未解决的编译问题:无法解决 LocalConverter
- php - 试图了解什么是命名空间:致命错误:未捕获的错误:在 C:\Users\bird\ 中找不到类 'feline\Cat'