| NAnt  Release Notes | 
| NAnt Release Notes |   | 
Updated NAnt to use the Unrestricted permission state when creating AppDomains by default instead of just on .NET/Mono 4.0. (Issue #48)
                    Moved <trycatch> task from NAntContrib to NAnt.
                    (Issue #26)
                
                    Moved <choose> task from NAntContrib to NAnt.
                    (Issue #26)
                
Updated NAnt project files to VS2010 format.
Upgraded to NUnit 2.6.
Added initial support for Silverlight 5
Added pause option to pause nant before exit.
Added detailed error messages when type loading exception occurs.
Updated <mail> task to reference System.Net.Mail namespace instead of System.Web.Mail.
Added additional attritbutes for greater control of the <mail> task. Such as:
                    Added flatten attribute to <zip> task.
                
                    Added flatten attribute to <tar> task.
                
Fixed issues with <copy> and <move> tasks when trying to relocate directories. 
                (Issue #11)
                
                    Fixed issue with <asminfo> task when trying to add assembly attributes with default constructors. 
                    (Issue #41)
                
                    Updated <style> task to preserve singleton tags whenever possible. 
                    (Issue #17)
                
Added necessary .NET 4.0 WPF and misc missing .NET 3.5 reference assemblies. (bug 3314793)
Fixed issue with NDoc when building NAnt from source. (bug #3416986).
Fixed issue when building NAnt with older versions of GNU Make.
Added mono-4.0 target
Added initial support for Silverlight 3 and 4
Upgraded to log4net 1.2.10.
Added initial support for 2008/2010 MSBuild/VS.NET project files.
Added WindowsBase.dll and PresentationFramework.dll to 4.0 target.
Changed the NAnt.Core.Tasks.DescriptionTask task to mixed. (bug #3058913).
Display correct registry hives in BuildException when Registry Path not found.
Fixed ndoc task to find hhc.exe for chm generation on 64 bit machines through reflection.
Fixed typo that prevented System.Management.dll from being included.
Fixed error with the <include> task when different build files include the same file. (bug #3016497).
Using the NAnt::get-assembly() function causes an "Object must implement IConvertible" error. (bug #3013492).
<solution> task).
                Enhanced the <xmlpeek> task to support more advanced XPath functions and syntax. It is now possible to use functions such as count() and to index the node using XPath directly. (feature request #1560566).
When the "destfile" attribute specifies a non-existent path, the base directory(ies) will be created. (bug #2997300).
Catch UnauthorizedAccessException in PathScanner to prevent NAnt from crashing when using the Scan() function to search for file(s) in directory with special permissions.
When the "output" attribute specifies a non-existent path, the base directory(ies) will be created. (bug #2985057).
For certain tasks (NDoc, Exec, MSBuild, etc) the console output is unorganized and difficult to read. (bug #2981604).
Cleanup the output to show assembly information and functions only when "verbose" attribute is set to "true". (bug #2981386).
When the "zipfile" attribute specifies a non-existent path, the base directory(ies) will be created. (bug #2981389).
As of this release, only the following namespaces are imported by default:
                    Starting from this release, only NAnt.Core
                    and mscorlib will be referenced by default.
                
In previous releases, all loaded assemblies would implicitly be referenced.
Changes to constructors break backward compatibility (bug 2782705).
Identifiers containing a dot or backslash are falsely rejected.
The target framework cannot be initialized if the .NET Framework SDK is not installed (bug #1859708).
Added the following assemblies to the list of reference assemblies:
Fixes bug #1848648.
A newline is implicitly added when writing a message to a file (bug #2807728).
When "output" parameter is specified, standard output is redirected properly. (bug #1010223).
                    The value of UseRuntimeEngine is not respected
                    when overriden by derived classes (bug #1850383).
                    
            
When source file is newer than destination file, then an error is reported if "overwrite" is not set to true.
Solution Folders result in build failure (bug #1732361).
"verbose" feature is now worked as documented (bug #1911292).
Improved backward compatibility with older unzip implementations.
Gets the newline string defined for this environment.
Gets the description of the current target framework.
Gets the CLR version of the current target framework.
Gets a comma-separated list of frameworks filtered by the specified FrameworkTypes.
For example:
    <target name="build-all">
        <foreach item="String" in="${framework::get-frameworks('installed compact')}" delim="," property="framework">
            <property name="nant.settings.currentframework" value="${framework}" />
            <call target="${framework}" />
        </foreach>
    </target>
    <target name="build">
        ...
    </target>
                
            Gets the version of the current target framework.
Return a value indicating whether NAnt is running on Windows.
Extracts files from a tar archive.
When installing NAnt from source on Unix (using make install), a nant.pc is now installed in $prefix/lib/pkgconfig.
To allow for staged installs, our makefile now also supports the DESTDIR variable:
    $ make DESTDIR=/tmp/local install
                
            This function is deprecated, use platform::is-windows() instead.
Added "winres" attribute to specify a Win32 resource file.
The "encoding" attribute can be used to specify the encoding when writing messages to a file.
    <echo file="build.cmd" encoding="ascii">...</echo>
                
            Allow referenced assemblies to be specified using <references> element on <test>:
    <nunit2>
        <test>
            <assemblies basedir="build/tests">
                <include name="Cegeka.HealthCare.DocGen.Tests.dll" />
                <include name="Cegeka.HealthCare.Util.Tests.dll" />
            </assemblies>
            <references basedir="build/lib">
                <include name="Cegeka.HealthCare.Common.dll" />
                <include name="Cegeka.HealthCare.DocGen.dll" />
                <include name="Cegeka.HealthCare.Util.dll" />
            </assemblies>
        </test>
    </nunit2>
                
                 Previously, all referenced assemblies needed to be either
                 in the GAC, or in the directory containing the test
                 assembly.
            Introduced support for targeting a specific platform, as defined in the solution or project.
Added "preserveWhitespace" parameter to retain the original format of the XML files.
Added "overwrite" parameter to control whether to overwrite files even if they are newer than corresponding entries in the archive.
Prior to NAnt 0.85, build authors would use a "nant.tasks.*" property to check whether a given task was available.
With the introduction of expression support in NAnt 0.85, we provided a more powerful alternative through the task::exists function.
As of this release, the "nant.tasks.*" properties are therefore no longer set by NAnt.
Removed support for the "nant.failure" property to set the target that should be executed when the build fails.
This property was deprecated in NAnt 0.83 in favor of the "nant.onfailure" attribute.
As of this release, setting the "nant.failure" attribute will no longer have any effect.
In NAnt 0.85, support for the '=' operator to check for equality was deprecated in favor of the '==' operator.
As from this release, the '=' operator is no longer recognized.
Introduced support for relational operators between version values.
                    Since NAnt 0.84, task authors have been able to specify the
                    location of the command-line tool by applying a ProgramLocationAttribute to
                    classes deriving from ExternalProgramBase.
                
                    The ProgramLocationAttribute allows task authors
                    to specify whether the tool is located in the framework directory
                    (eg. C:\WINDOWS\Microsoft.NET\Framework\v1.1.4432) or the
                    SDK directory (eg. C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1)
                    without actually having to deal with the complexity of knowing
                    the actual path to these directories (for each supported framework).
                
In NAnt 0.86, we've taken this one step further. Each defined framework now has a (ordered) list of directories that can be scanned to locate a framework tool. The list of directories can be easily tuned for each framework by modifying the <tool-paths> nodes in the NAnt configuration file.
An example of such a node for the Mono 3.5 profile:
    <tool-paths>
        <directory name="${path::combine(prefix, 'lib/mono/3.5')}" />
        <directory name="${path::combine(prefix, 'lib/mono/2.0')}" />
        <directory name="${path::combine(prefix, 'lib/mono/1.0')}" />
    </tool-paths>
                
                The directories configured in the <tool-paths> node of the current target framework will be scanned in the order in which they are defined.
                    The tool paths are implicitly used when a given tool cannot
                    be located on the location specified by the ProgramLocationAttribute.
                    As such, this only applies to tasks deriving from ExternalProgramBase.
                
To expose this functionality to build authors, we've added a framework::get-tool-path function that can be used to search for a given tool.
For example:
    <exec program="${framework::get-tool-path('gacutil.exe')}" managed="strict">
        <arg value="/i" />
        <arg file="Cegeka.HealthFramework.dll" />
    </exec>
                
            Introduced support for forcing a managed application to run on the currently targeted CLR.
This was previously only possible by modifying the <startup> section of the application configuration file or by using constructs specific to each CLR (eg. using COMPLUS_VERSION environment variable for the MS CLR), which made build scripts non-portable.
                    Developers extending NAnt, can now control this by setting the
                    Managed property for tasks deriving from
                    ExternalProgramBase.
                
                    For build authors, forcing a managed application to run on a
                    specific version of a CLR can be done by setting the
                    "managed" attribute of <exec>
                    to strict.
                
For example:
    <exec program="nunit-console.exe" managed="strict">
        <arg value="/noshadow" />
        <arg file="Cegeka.HealthFramework.Tests.dll" />
    </exec>
                
            Support for targeting .NET Framework 3.5 and Mono 3.5 Profile is now available.
                    Note: this does not apply to the <solution>
                    task.
                
Added experimental support for targeting Silverlight 2.0 and Moonlight 2.0.
                    Note: this does not apply to the <solution>
                    task.
                
Defines a set of patterns, mostly used to include or exclude certain files.
                    Patterns can be grouped to sets, and later be referenced by their
                    id.
                
For example:
    <patternset id="binaries">
        <include name="bin/**/*" />
        <exclude name="bin/*.tmp" />
    </patternset>
    <patternset id="docs">
        <include name="requirements/**/*" />
        <exclude name="design/**/*.doc" />
    </patternset>
    <patternset id="client.sources">
        <include name="client/**/*.cs" />
        <exclude name="client/**/*.vb" />
    </patternset>
    <patternset id="server.sources">
        <include name="server/**/*.cs" />
        <exclude name="server/**/*.vb" />
    </patternset>
    <patternset id="sources">
        <patternset refid="client.sources" />
        <patternset refid="server.sources" />
    </patternset>
    <target name="deploy">
        <copy todir="${dist.path}">
            <fileset basedir="${build.path}">
                <patternset refid="binaries" />
                <patternset refid="docs" />
                <patternset refid="sources" />
                <exclude name="**/*.sdf" />
            </fileset>
        </copy>
    </target>
                
            Initial start-up time and project initialization have been reduced dramatically by lazy configuration of supported target frameworks.
Compiler options that were introduced in .NET Framework 2.0 are now also available when targeting .NET Compact Framework 2.0.
mjs when targeting Mono.
                The reference assemblies of a given target framework are no longer limited to the assemblies in, what is known as, the framework assembly directory.
Instead, these are now defined using one or more <reference-assemblies> filesets in the <framework> node of the NAnt configuration file.
Added a "casesensitive" attribute to control whether pattern matching must be case-sensitive.
The default is true on Unix and false on on other platforms.
<solution> task).
                
                    Global types can now be (re)defined in task containers
                    (such a <if> ,
                    <foreach>).
                
For example:
    <project name="container-type" default="build">
        <if test="${platform::is-win32()}">
            <fileset id="sources">
                <include name="**/*.cs" />
                <!-- exclude Unix-specific classes -->
                <exclude name="**/Unix/*.cs" />
            </fileset>
        </if>
        <if test="${platform::is-unix()}">
            <fileset id="sources">
                <include name="**/*.cs" />
                <!-- exclude Win32-specific classes -->
                <exclude name="**/Win32/*.cs" />
            </fileset>
        </if>
        <target name="build">
            <csc output="IvsController.dll">
                <sources refid="sources" />
                <references>
                    <include name="System.dll" />
                    <include name="System.Data.dll" />
                    <include name="System.Xml.dll" />
                </references>
            </csc>
        </target>
    </project>
                
                Up until now, only tasks could be executed in these containers.
/langversion and /platform
                    commandline options of the C# compiler are now exposed as
                    attributes.
                /keycontainer and /keyfile
                    commandline options [Mono / .NET 2.0 or higher].
                /platform commandline option of the JScript.NET
                    compiler is now exposed using the "platform" attribute.
                /platform commandline option of the VB.NET
                    compiler is now exposed using the "platform" attribute. [.NET 2.0 or higher]
                /keycontainer and /keyfile
                    commandline options. [.NET 2.0 or higher]
                /keycontainer and /keyfile
                    commandline options.
                <solution>
                    task.
                The NAnt.Core.Attributes.FileSetAttribute is obsolete. Task developers should use the NAnt.Core.Attributes.BuildElementAttribute instead:
For example:
    [FileSetBuildElement("fileset")]
    public FileSet CopyFileSet {
        get { return _fileset; }
        set { _fileset = value; }
    }
                
            <solution> task
                    doesn't support COM, OCX apps built in Visual C++ (bug 
                        #1078641).
                document() function is not
                    considered to be relative to the base URI of stylesheet containing the function
                    call (bug 
                        #1078896).
                
                            <nunit2> task.
                
                        <csc> task will target .NET 2.0. Previous versions of
                NAnt would target .NET 1.0 by default.<arg>
                element (used by, for example, the <exec>
                task) would automatically add quotes for both "file" and "value" attributes in
                the command line generated by the task. That automatic quoting has been removed
                for "value" attributes (but not for "file" attributes). This change may break
                build files that assume that both arguments specified using the "file" and
                "value" attributes will automatically be quoted.<nunit2> task been
                updated to support 
                    NUnit 2.2. Assemblies built using previous versions of NUnit should
                either be rebuilt using 
                    NUnit 2.2 or a 
                    binding redirect should be configured in the application configuration
                file of the test assembly.
            XmlLogger
                is now buffered until build has finished, and 
                        XmlLogger can now also be used as a listener.
                        <nowarn> child element.
                    <warnaserror> child
                element. [.NET 2.0 or higher]<lib> element is
                obsolete, in favor of <lib>
                child element on <references>
                and <modules> element.<cvs> tasks.
                        <certificates> elements.
            lc.exe commandline tool to compile license files whenever
                available.
            <fileset> support
                for specifiying build files to execute.
            <nunit> task has
                been deprecated, and will be moved to NAntContrib
                in a future release. NUnit 1.0 test assemblies will remain supported through
                NAntContrib, but we strongly advise you to upgrade to NUnit 2.x.
            
                        <script> task.<script> task is now
                supported on Mono.<script>
                task will now also be scanned for functions and filters.
            obj\<configuration>
                directory relative to project directory. The compiled resource files will not
                be removed when the task finishes, by doing this resource files will now only
                be recompiled if the compiled resource file in the object directory is no
                longer up-to-date. This matches the behaviour of VS.NET.
                        <nowarn> child element. [.NET 2.0 or higher]
                    <warnaserror> child
                element. [.NET 2.0 or higher]<imports> child
                element, and deprecated "imports" attribute.<lib> element is
                obsolete, in favor of <lib>
                child element on <references>
                and <modules> element.
            
                        <nowarn> child element. [.NET 2.0 or higher]<lib> element is
                obsolete, in favor of <lib>
                child element on <references>
                and <modules> element.<fileset> for
                managing assembly files.
            <includes>
                and <excludes>
                elements in favor of <include>
                and <exclude> elements.<includesList>
                element in favor of <includesfile>.<excludesfile>
                element.
            Task.LogPrefix property has been deprecated. Messages that are
                written to build log by a given task, will now automatically get prefixed with
                the task name. This behaviour can be disabled by the new -e[macs] commandline
                option.
            XmlLogger
                will now correctly handle null-characters in the build output.<resources> element
                of the compiler tasks.
            filename attribute was renamed to file to improve
                consistency with other tasks.
            filename attribute was renamed to file to improve
                consistency with other tasks.
            Some existing build scripts may stop working now or in the next release due to the following changes:
<call> task now executes the given target and all its
                dependencies. In previous versions of NAnt only the target itself would be
                executed.todir attribute of the <copy> and <move>
                tasks no longer defaults to the project base directory. It must now be set
                explicitly.force attribute of the <call> task has been
                deprecated and has no longer any effect. The <call> task
                will now always execute the specified target, regardless of the fact that this
                target has already been executed before.files and attachments attributes of
                the <mail> task have been replaced by fileset support.nant.onfailure property would be executed when the build
                fails. However, NAnt actually executed a target identified by the nant.failure
                property (if available). This has now been corrected and the old syntax (nant.failure)
                is now deprecated.<param> element of the <style> task
                has been deprecated in favor of a <parameters> collection
                with nested <parameter> elements. The <parameter>
                element now also supports a namespaceuri, if and unless
                attribute. See the documentation of the <style> task for
                more information.Plain formatter was implicitly
                added in the <nunit2> task. In NAnt 0.8.4, the Plain
                formatter will only implicitly be added if no other formatters are specified.
                In this case, a warning message will be output to the build log encouraging
                build authors to explicitly add this formatter for forward compatibility. In
                future versions of NAnt, the Plain formatter will no longer
                implicitly be added.<param> child element of the <style>
                task has been deprecated in favor of a nested <parameters> collection.
            <csc>, <jsc>,
                <vbc> and <vjc> tasks: when dynamixprefix
                is set to "true" and prefix is set to the root namespace of the assembly for
                the nested <resources> element, the compiler tasks will now
                compile resources with IDs matching these generated by VS.NET. Support for the
                generation of satellite assemblies was also added to these tasks.<call> task now executes the given target and all its
                dependencies. In previous versions of NAnt only the target itself would be
                executed.force attribute of the <call> task has been
                deprecated and has no longer any effect. The <call> task
                will now always execute the specified target, regardless of the fact that this
                target has already been executed before.
            todir attribute no longer defaults to the project base
                directory. It must now be set explicitly.flatten attribute to allow all matching files to be
                copied to a single directory.
            <lib> element.
            level attribute to allow messages to be output with a
                specific level.
            httpproxy attribute of the <get> task is
                deprecated, use the new <proxy> child element instead.<credentials> child element used for authenticating
                the request with the Internet resource.ignoreerrors attribute in favor of the failonerror
                attribute.timeout attribute to allow length of time to wait for a
                response or the request to timeout to be specified.
            <uptodatefiles child element for uptodate fileset
                support.<if uptodatefile="..."> now behaves as documented, meaning
                that nested tasks will only be executed if the file specifies in the
                uptodatefile attribute actually exists and the file specified in the uptodatefile
                attribute is more recent or the same lastwritetime than the file(s) specifies
                in the comparefile attribute and <comparefiles>
                fileset.
            <lib> element.
            files and attachments attributes
                have been replaced by fileset support.todir attribute no longer defaults to the project base
                directory. It must now be set explicitly.flatten attribute to allow all matching files to
                be moved to a single directory.
            <properties> child element.buildfile is now a required attribute, which makes it harder to
                accidently write an infinitely looping build.
            <nantschema> task does not generate the
                correct XML Schema definition for collections and arrays. This tasks needs to
                be updated. Please use with caution.
            <ndoc> task to using version 1.2 of NDoc.
            <nunit2> task to use version 2.1 of NUnit.Plain formatter was implicitly
                added. In NAnt 0.8.4, the Plain formatter will only implicitly be
                added if no other formatters are specified. In this case, a warning message
                will be output to the build log encouraging build authors to explicitly add
                this formatter for forward compatibility. In future versions of NAnt, the Plain
                formatter will no longer implicitly be added.outputdir attribute for <formatter> element
                to control the directory where the test result file will be stored (if the usefile
                attribute is "true").
            overwrite attribute to the <property> task
                to control whether the value of the specified property should be overwritten
                when the property already exists.<resgen> task when
                using a fileset.
            <assemblyfolders> fileset element that allows a
                set of folders to be set, that should be searched to resolve assembly
                references.includevsfolders attribute was added to
                control whether these folders should be searched for assembly references.<excludeprojects> fileset that allows a set of
                projects to be excluded.outputdir attribute can now be specified, which overrides the
                directory where compiled targets will be placed.<webmap> element was added that maps URL's of web
                projects to local path, thereby removing the need to configure the web server
                to allow access to these project files.<param> child element has been deprecated in
                favor of a nested <parameters> collection.
            <lib> element.
            <lib> element.
            includeemptydirs attribute to control whether empty
                directories should be included in the generated zip file.
            basedir for fileset was specified.
            basedir of fileset is set to the root directory
                of a drive in Windows.
            ProgramLocationAttribute that can be assigned to a task to
                indicate that it wraps an executable that is part of either the .NET Framework
                or the .NET Framework SDK, and have NAnt figure out the full path to the
                executable using the framework settings in the NAnt configuration file.
            FileSetAttribute has been deprecated. The BuildElementAttribute
                should be used instead.
            FrameworkConfigurableAttribute that can be assigned to a
                task attribute to allow the default values of that attribute to be configured
                from the framework configuration section in the NAnt configuration file for the
                currently active framework.
            <proxy> and <credentials> data
                types that are used to provide proxy settings and authentication information
                for tasks that connect to external resources (eg. the <get> task).