如何在NANT 0.91中进行IF / ELSE?

时间:2015-09-22 14:18:19

标签: nant

我们正在使用Nant 0.91所以< choose>不可用。你如何在Nant 0.91中进行IF / ELSE?我想在NAnt 0.91中做一些(使用NAnt 0.92语法)。 [我不允许修改当前安装的NAnt 0.91]:

<choose>
   <when test="${deploy.env=='PROD'}">
        <property name="deploy.root.dir" value="\\${deploy.server}\${deploy.mode}\${app.dest.dir}\" />
    </when>
    <otherwise>
        <property name="deploy.root.dir" value="\\${deploy.server}\${deploy.mode}\${deploy.env}\${app.dest.dir}\" />
    </otherwise>
</choose>

2 个答案:

答案 0 :(得分:9)

我们在这里使用的最简单的解决方案是使用两个if任务,一个对另一个执行负面测试:

<if test="${deploy.env == 'PROD'}">
    <property name="deploy.root.dir" value="\\${deploy.server}\${deploy.mode}\${app.dest.dir}\" />
</if>
<if test="${deploy.env != 'PROD'}">
    <property name="deploy.root.dir" value="\\${deploy.server}\${deploy.mode}\${deploy.env}\${app.dest.dir}\" />
</if>

但是,在您的情况下,您还可以利用property task内置if / unless功能的事实:

<property name="deploy.root.dir" if="${deploy.env == 'PROD'}" value="\\${deploy.server}\${deploy.mode}\${app.dest.dir}\" />
<property name="deploy.root.dir" unless="${deploy.env == 'PROD'}" value="\\${deploy.server}\${deploy.mode}\${deploy.env}\${app.dest.dir}\" />

答案 1 :(得分:0)

如果条件为真,您可以设置默认属性值,然后设置覆盖:

[Serializable]
public class Shape
{
    public int X { get; set; }
    public int Y { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
    public ShapeType ShapeType { get; set; }
    public Color Color { get; set; }
    public bool Mirrored { get; set; }
}