<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <!-- Documenting T:NAnt.Core.Tasks.IfTask--> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title><if> Task</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr> <td class="NavBar-Cell"> <a href="http://nant.sourceforge.net"> <b>NAnt</b> </a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <a href="../tasks/index.html">Task Reference</a> <img alt="->" src="../images/arrow.gif" /> <if></td> <td class="NavBar-Cell" align="right"> v0.91</td> </tr> </table> <h1><if></h1> <p> Checks the conditional attributes and executes the children if <b>true</b>. </p> <p> If no conditions are checked, all child tasks are executed. </p> <p> If more than one attribute is used, they are &&'d. The first to fail stops the check. </p> <p> The order of condition evaluation is, <code>targetexists</code>, <code>propertyexists</code>, <code>propertytrue</code>, <code>uptodatefile</code>. </p> <p class="i2"> <b>Note:</b> instead of using the deprecated attributes, we advise you to use the following functions in combination with the <code>test</code> attribute: </p> <div class="table"> <table> <tr> <th>Function</th> <th>Description</th> </tr> <tr> <td> <a href="../functions/property.exists(System.String).html">property::exists()</a> </td> <td>Checks whether the specified property exists.</td> </tr> <tr> <td> <a href="../functions/target.exists(System.String).html">target::exists()</a> </td> <td>Checks whether the specified target exists.</td> </tr> </table> </div> <h3>Parameters</h3> <div class="table"> <table> <tr> <th>Attribute</th> <th style="text-align: center;">Type</th> <th>Description</th> <th style="text-align: center;">Required</th> </tr> <tr> <td valign="top">comparefile</td> <td style="text-align: center;">string</td> <td> <i>Deprecated.</i> The file to check against for the uptodate file. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">propertyexists</td> <td style="text-align: center;">string</td> <td> <i>Deprecated.</i> Used to test whether a property exists. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">propertytrue</td> <td style="text-align: center;">string</td> <td> <i>Deprecated.</i> Used to test whether a property is true. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">targetexists</td> <td style="text-align: center;">string</td> <td> <i>Deprecated.</i> Used to test whether a target exists. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">test</td> <td style="text-align: center;">string</td> <td> Used to test arbitrary boolean expression. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">uptodatefile</td> <td style="text-align: center;">string</td> <td> <i>Deprecated.</i> The file to compare if uptodate. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">failonerror</td> <td style="text-align: center;">bool</td> <td> Determines if task failure stops the build, or is just reported. The default is <b>true</b>. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">if</td> <td style="text-align: center;">bool</td> <td> If <b>true</b> then the task will be executed; otherwise, skipped. The default is <b>true</b>. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">unless</td> <td style="text-align: center;">bool</td> <td> Opposite of <code>if</code>. If <b>false</b> then the task will be executed; otherwise, skipped. The default is <b>false</b>. </td> <td style="text-align: center;">False</td> </tr> <tr> <td valign="top">verbose</td> <td style="text-align: center;">bool</td> <td> Determines whether the task should report detailed build log messages. The default is <b>false</b>. </td> <td style="text-align: center;">False</td> </tr> </table> </div> <h3>Nested Elements:</h3> <!--Element--> <h4> <a id="comparefiles"> </a> <<a href="../types/fileset.html">comparefiles</a>> </h4> <div class="nested-element"> <i>Deprecated.</i> The <a href="../types/fileset.html"><fileset></a> that contains the comparison files for the <code>uptodatefile</code>(s) check. <p /></div> <h4> <a id="comparefiles"> </a> </<a href="../types/fileset.html">comparefiles</a>> </h4> <!--Element--> <h4> <a id="uptodatefiles"> </a> <<a href="../types/fileset.html">uptodatefiles</a>> </h4> <div class="nested-element"> <i>Deprecated.</i> The <a href="../types/fileset.html"><fileset></a> that contains the uptodate files for the <code>comparefile</code>(s) check. <p /></div> <h4> <a id="uptodatefiles"> </a> </<a href="../types/fileset.html">uptodatefiles</a>> </h4> <h3>Examples</h3> <ul class="examples"> <li> <p>Tests the value of a property using expressions.</p> <pre class="code"> <if test="${build.configuration=='release'}"> <echo>Build release configuration</echo> </if> </pre> </li> <li> <p>Tests the the output of a function.</p> <pre class="code"> <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> </pre> </li> <li> <p> <code>(Deprecated)</code> Check that a target exists.</p> <pre class="code"> <target name="myTarget" /> <if targetexists="myTarget"> <echo message="myTarget exists" /> </if> </pre> </li> <li> <p> <code>(Deprecated)</code> Check existence of a property.</p> <pre class="code"> <if propertyexists="myProp"> <echo message="myProp Exists. Value='${myProp}'" /> </if> </pre> </li> <li> <p> <code>(Deprecated)</code> Check that a property value is true.</p> <pre class="code"> <if propertytrue="myProp"> <echo message="myProp is true. Value='${myProp}'" /> </if> </pre> </li> <li> <p> <code>(Deprecated)</code> Check that a property exists and is <b>true</b> (uses multiple conditions). </p> <pre class="code"> <if propertyexists="myProp" propertytrue="myProp"> <echo message="myProp is '${myProp}'" /> </if> </pre> <p>which is the same as</p> <pre class="code"> <if propertyexists="myProp"> <if propertytrue="myProp"> <echo message="myProp is '${myProp}'" /> </if> </if> </pre> </li> <li> <p> <code>(Deprecated)</code> Check file dates. If <code>myfile.dll</code> is uptodate, then do stuff. </p> <pre class="code"> <if uptodatefile="myfile.dll" comparefile="myfile.cs"> <echo message="myfile.dll is newer/same-date as myfile.cs" /> </if> </pre> <p>or</p> <pre class="code"> <if uptodatefile="myfile.dll"> <comparefiles> <include name="*.cs" /> </comparefiles> <echo message="myfile.dll is newer/same-date as myfile.cs" /> </if> </pre> <p>or</p> <pre class="code"> <if> <uptodatefiles> <include name="myfile.dll" /> </uptodatefiles> <comparefiles> <include name="*.cs" /> </comparefiles> <echo message="myfile.dll is newer/same-date as myfile.cs" /> </if> </pre> </li> </ul> <h3>Requirements</h3> <div style="margin-left: 20px;"> <b>Assembly:</b> NAnt.Core (0.91.4312.0) </div> </body> </html>