<setenv>

Sets an environment variable or a whole collection of them. Use an empty NAnt.Core.Tasks.SetEnvTask.LiteralValue attribute to clear a variable.
Variables will be set for the current NAnt process and all child processes that NAnt spawns (compilers, shell tools, etc). If the intention is to only set a variable for a single child process, then using the NAnt.Core.Tasks.ExecTask and its nested NAnt.Core.Tasks.ExecTask.EnvironmentSet element might be a better option.
Expansion of inline environment variables is performed using the syntax of the current platform. So on Windows platforms using the string %PATH% in the NAnt.Core.Tasks.SetEnvTask.LiteralValue attribute will result in the value of the PATH variable being expanded in place before the variable is set.

Parameters

Attribute Type Description Required
dir directory
The value for a directory-based environment variable. NAnt will convert it to an absolute path.
False
name string
The name of a single Environment variable to set
False
file file
The value for a file-based environment variable. NAnt will convert it to an absolute filename.
False
value string
The literal value for the environment variable.
False
path
The value for a PATH like environment variable. You can use : or ; as path separators and NAnt will convert it to the platform's local conventions.
False
failonerror bool
Determines if task failure stops the build, or is just reported. The default is true.
False
if bool
If true then the task will be executed; otherwise, skipped. The default is true.
False
unless bool
Opposite of NAnt.Core.Task.IfDefined. If false then the task will be executed; otherwise, skipped. The default is false.
False
verbose bool
Determines whether the task should report detailed build log messages. The default is false.
False

Nested elements

<variable>

Gets or sets the environment variables.

Parameters

Attribute Type Description Required
name string
The name of the environment variable.
True
dir directory
The value for a directory-based environment variable. NAnt will convert it to an absolute path.
False
file file
The value for a file-based environment variable. NAnt will convert it to an absolute filename.
False
if bool
Indicates if the environment variable should be passed to the external program. If true then the environment variable will be passed; otherwise, skipped. The default is true.
False
value string
The literal value for the environment variable.
False
path
The value for a PATH like environment variable. You can use : or ; as path separators and NAnt will convert it to the platform's local conventions.
False
unless bool
Indicates if the environment variable should not be passed to the external program. If false then the environment variable will be passed; otherwise, skipped. The default is false.
False

Nested elements

<path>

Sets a single environment variable and treats it like a PATH - ensures the right separator for the local platform is used.

</path>

<variable>

Examples

Set the MONO_PATH environment variable on a *nix platform.

<setenv name=="MONO_PATH" value="/home/jimbob/dev/foo:%MONO_PATH%"/>

Set a collection of environment variables. Note the nested variable used to set var3.

<setenv>
        <variable name="var1" value="value2" />
        <variable name="var2" value="value2" />
        <variable name="var3" value="value3:%var2%" />
</setenv>

Set environment variables using nested path elements.

<path id="build.path">
       <pathelement dir="c:/windows" />
       <pathelement dir="c:/cygwin/usr/local/bin" />
   </path>
<setenv>         
        <variable name="build_path" >
               <path refid="build.path" />
        </variable>
        <variable name="path2">
           <path>
               <pathelement dir="c:/windows" />
               <pathelement dir="c:/cygwin/usr/local/bin" />
           </path>
        </variable>
</setenv>

Requirements

Assembly
NAnt.Core.dll
Namespace
NAnt.Core.Tasks