NAnt: не удается преобразовать в логическое значение

#if-statement #nant #type-conversion

#оператор if #nant #преобразование типа

Вопрос:

 <if test="${deployErrors} amp;> 0">
   <fail message="MSDeploy failed" />
</if>
  

${deployErrors} заполняется из группы захвата регулярных выражений и имеет либо числовое значение, либо пустую строку. Как я могу проверить, больше ли это значение 0 в блоке NAnt if? Вот ошибка, которую я получаю, если ошибки развертывания содержат ‘1’

‘1 > 0’ не является допустимым значением для атрибута ‘test’ of . Не удается преобразовать ‘1 > 0’ в логическое значение. Строка не была распознана как допустимое логическое значение.

Ответ №1:

Я не пробовал это, но я думаю, вам нужно все ваше выражение в фигурных скобках:

<if test="${deployErrors > 0}">

Смотрите также второй пример на странице документации.

Обновление из OP:

Это сработало:

 <if test="${deployErrors != ''}">
  

Комментарии:

1. Спасибо, это навело меня на правильный путь. Я не смог бы их сравнить, потому что ошибки развертывания преобразовались бы в число. Однако сравнение его с » работает.

Ответ №2:

Если вам нужно что-то сделать с фактическим числовым значением, вы могли бы сделать что-то вроде этого:

 <if test="${int::parse('0'   deployErrors) > 10}">
  

Ответ №3:

Аналогично ответу Тристана — для преобразования строки в bool, для строки, например true , false

 <if test="${bool::parse(isEnabled)}">
  

Из http://nant.sourceforge.net/release/0.85/help/functions/bool.parse.html