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

sko*_*ima 5 nant nantcontrib

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

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

sko*_*ima 14

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>
Run Code Online (Sandbox Code Playgroud)