Ответ 1
Нет, нет. Вы должны написать свой собственный.
У меня есть следующий код в файле проекта MSBuild:
<Error Text="Some Text" Condition="'$(StringName)' != 'Test'"/>
Сравнение строк здесь чувствительно к регистру, поэтому, когда $(StringName)
является чем-то вроде 'test'
, условие не выполняется.
Как я могу изменить условие, чтобы 'test'
также соответствовало сравнению? Есть ли в MSBuild функция сравнения без учета регистра?
Нет, нет. Вы должны написать свой собственный.
Дэн Мозли имеет подробное представление о функциях свойств MSBuild:
http://blogs.msdn.com/b/visualstudio/archive/2010/04/02/msbuild-property-functions.aspx
В вашем примере вы можете использовать что-то вроде:
<Error Text="Some Text" Condition="'$(StringName.ToUpper())' != 'TEST'"/>
Сравнение строк 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 будет что-то странное.
Используйте функцию свойства MSBuild со специальным параметром для выполнения сравнения строк без учета регистра:
<Error Text="Some Text" Condition="!$(StringName.Equals('Test', StringComparison.OrdinalIgnoreCase))"/>