NAnt是否有if / then / else任务?

时间:2012-10-21 19:00:16

标签: nant nantcontrib

其他构建系统,例如Ant,有一个 if / then / else 结构,允许在许多情况下简化脚本逻辑。 CIFactory NAnt变体也具有此功能(<ifthenelse/>),但是它已经过时且不支持.NET 4.0 - 然而,将您的NAnt版本从CIFactory更新为官方版本会使您的构建脚本不必要地复杂化,因为您现在需要两个<if/>任务,一个具有原始条件,一个具有否定。

在NAnt中是否可以使用单一条件实现 if / then / else 流程?

1 个答案:

答案 0 :(得分:14)

NAnt 0.92中,已从NAnt-contrib升级<choose/>任务,只需对测试进行一次评估,即可实现 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>