NAnt SDK Documentation - v0.92 |

# IfTask Class

Checks the conditional attributes and executes the children if true.

For a list of all members of this type, see IfTask Members.

System.Object
NAnt.Core.Element
NAnt.Core.Task
NAnt.Core.TaskContainer
NAnt.Core.Tasks.IfTask
NAnt.Core.Tasks.IfNotTask

[Visual Basic]
<TaskName(Name:="if")>
Public Class IfTask
Inherits TaskContainer
[C#]
[TaskName(Name="if")]
public class IfTask : TaskContainer

#### Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

#### Remarks

If no conditions are checked, all child tasks are executed.

If more than one attribute is used, they are &&'d. The first to fail stops the check.

The order of condition evaluation is, TargetNameExists, PropertyNameExists, PropertyNameTrue, UpToDateFile.

> Note instead of using the deprecated attributes, we advise you to use the following functions in combination with the Test attribute:

Function | Description
--- | ---
Exists | Checks whether the specified property exists.
Exists | Checks whether the specified target exists.

#### Example

Tests the value of a property using expressions.

    <if test="${build.configuration=='release'}">
        <echo>Build release configuration</echo>
    </if>

Tests the the output of a function.

    <if test="${not file::exists(filename) or file::get-length(filename) = 0}">
        <echo message="The version file ${filename} doesn't exist or is empty!" />
    </if>

`(Deprecated)` Check that a target exists.

    <target name="myTarget" />
    <if targetexists="myTarget">
        <echo message="myTarget exists" />
    </if>

`(Deprecated)` Check existence of a property.

    <if propertyexists="myProp">
        <echo message="myProp Exists. Value='${myProp}'" />
    </if>

`(Deprecated)` Check that a property value is true.

    <if propertytrue="myProp">
        <echo message="myProp is true. Value='${myProp}'" />
    </if>

`(Deprecated)` Check that a property exists and is true (uses multiple conditions).

    <if propertyexists="myProp" propertytrue="myProp">
        <echo message="myProp is '${myProp}'" />
    </if>

which is the same as

    <if propertyexists="myProp">
        <if propertytrue="myProp">
            <echo message="myProp is '${myProp}'" />
        </if>
    </if>

`(Deprecated)` Check file dates. If `myfile.dll` is uptodate, then do stuff.

    <if uptodatefile="myfile.dll" comparefile="myfile.cs">
        <echo message="myfile.dll is newer/same-date as myfile.cs" />
    </if>

or

    <if uptodatefile="myfile.dll">
        <comparefiles>
            <include name="*.cs" />
        </comparefiles>
        <echo message="myfile.dll is newer/same-date as myfile.cs" />
    </if>

or

    <if>
        <uptodatefiles>
            <include name="myfile.dll" />
        </uptodatefiles>
        <comparefiles>
            <include name="*.cs" />
        </comparefiles>
        <echo message="myfile.dll is newer/same-date as myfile.cs" />
    </if>

#### Requirements

Namespace: NAnt.Core.Tasks

Assembly: NAnt.Core (in NAnt.Core.dll)

#### See Also

IfTask Members | NAnt.Core.Tasks Namespace