Можете ли вы выполнить сравнение строк без учета регистра в MSBuild? - PullRequest
16 голосов
/ 12 октября 2009

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

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

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

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

Ответы [ 5 ]

32 голосов
/ 12 июня 2012

Дэн Мозли имеет подробное описание функций свойств MSBuild здесь:

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

Для вашего примера вы можете использовать что-то вроде:

<Error Text="Some Text" Condition="'$(StringName.ToUpper())' != 'TEST'"/>
13 голосов
/ 12 июня 2012

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

Я почти уверен, что в вашем сценарии что-то еще странное.

4 голосов
/ 25 октября 2011
1 голос
/ 06 июня 2017

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

<Error Text="Some Text" Condition="!$(StringName.Equals('Test', StringComparison.OrdinalIgnoreCase))"/>
0 голосов
/ 12 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...