Можете ли вы выполнить сравнение строк без учета регистра в MSBuild?

У меня есть следующий код в файле проекта MSBuild:

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

Сравнение строк здесь чувствительно к регистру, поэтому, когда $(StringName) является чем-то вроде 'test', условие не выполняется.

Как я могу изменить условие, чтобы 'test' также соответствовало сравнению? Есть ли в MSBuild функция сравнения без учета регистра?

Ответы

Ответ 1

Нет, нет. Вы должны написать свой собственный.

Ответ 3

Сравнение строк 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

Я уверен, что в вашем script будет что-то странное.

Ответ 5

Используйте функцию свойства MSBuild со специальным параметром для выполнения сравнения строк без учета регистра:

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