У NAnt есть задача if/then/else?
Другие системы сборки, например Ant, имеют конструкцию if/then/else, которая во многих случаях позволяет упростить логику скрипта. Вариант CIFactory NAnt также имеет это (<ifthenelse/>
), но крайне устарел и не поддерживает.NET 4.0 - тем не менее, обновление вашей версии NAnt из CIFactory до официальной сборки усложняет ваши сценарии сборки, потому что теперь вам нужно два <if/>
задачи, одна с исходным условием, одна с отрицанием.
Возможно ли в NAnt достичь потока if/then/else с одним условием?
1 ответ
Решение
В NAnt 0,92 <choose/>
Задача была повышена из NAnt-contrib и позволяет вам достичь эффекта if/then/else с помощью только одной оценки условия теста. Пример:
<property name="operatingSystem"
value="${operating-system::to-string(environment::get-operating-system())}" />
<choose>
<when test="${string::contains(operatingSystem, 'Windows')}">
<echo message="Running on Microsoft Windows" />
</when>
<otherwise>
<echo message="Are we running on Linux?" />
</otherwise>
</choose>