【问题标题】:Can you perform a case-insensitive string comparison in MSBuild?您可以在 MSBuild 中执行不区分大小写的字符串比较吗?
【发布时间】:2009-10-12 12:00:01
【问题描述】:

我的 MSBuild 项目文件中有以下代码:

<Error Text="Some Text" Condition="'$(StringName)' != 'Test'"/>

这里的字符串比较是区分大小写的,所以当$(StringName)类似于'test'时,条件不成立。

如何更改条件以使'test' 也满足比较条件? MSBuild 中是否有任何不区分大小写的比较功能?

【问题讨论】:

标签: msbuild


【解决方案1】:

Dan Moseley 在此处详细了解 MSBuild 属性函数:

http://blogs.msdn.com/b/visualstudio/archive/2010/04/02/msbuild-property-functions.aspx

对于您的示例,您可以使用以下内容:

<Error Text="Some Text" Condition="'$(StringName.ToUpper())' != 'TEST'"/>

【讨论】:

  • +1 因为您不仅引用了链接,而且还举了一个真实的例子。添加了缺少的结束引号,Condition 必须为大写。
  • ToUpperInvariant 可能会更好
【解决方案2】:

MSBuild 字符串比较不区分大小写:

<PropertyGroup>
    <MyProperty>FOOBAR</MyProperty>
</PropertyGroup>

<Message Text="ALL CAPS" Importance="high" Condition="'$(MyProperty)' == 'FOOBAR'" />
<Message Text="all lower" Importance="high" Condition="'$(MyProperty)' == 'foobar'" />

会输出

ALL CAPS
all lower

我很确定你的脚本中还有一些奇怪的地方。

【讨论】:

    【解决方案3】:

    使用带有特殊参数的 MSBuild 属性函数来执行不区分大小写的字符串比较:

    <Error Text="Some Text" Condition="!$(StringName.Equals('Test', StringComparison.OrdinalIgnoreCase))"/>
    

    【讨论】:

      【解决方案4】:

      不,没有。你必须自己写。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2021-05-09
        • 2015-07-23
        相关资源
        最近更新 更多