<?xml version="1.0"?>
<configuration>
    <!-- Leave this alone. Sets up configsectionhandler section -->
    <configSections>
        <section name="nant" type="NAnt.Core.ConfigurationSection, NAnt.Core" />
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
    </configSections>
    <appSettings>
        <!-- Used to indicate the location of the cache folder for shadow files -->
        <add key="shadowfiles.path" value="%temp%\nunit20\ShadowCopyCache" />
        <!-- Used to indicate that NAnt should shadow copy files in a cache folder near the executable -->
        <add key="nant.shadowfiles" value="False" />
        <!-- Used to indicate if cached files should be deleted when done running-->
        <add key="nant.shadowfiles.cleanup" value="False" />
        <!-- To enable internal log4net logging, uncomment the next line -->
        <!-- <add key="log4net.Internal.Debug" value="true"/> -->
    </appSettings>
    <!-- nant config settings -->
    <nant>
        <frameworks>
            <platform name="win32" default="auto">
                <task-assemblies>
                        <!-- include NAnt task assemblies -->
                        <include name="*Tasks.dll" />
                        <!-- include NAnt test assemblies -->
                        <include name="*Tests.dll" />
                        <!-- include framework-neutral assemblies -->
                        <include name="tasks/*.dll" />
                        <!-- exclude Microsoft.NET specific task assembly -->
                        <exclude name="NAnt.MSNetTasks.dll" />
                        <!-- exclude Microsoft.NET specific test assembly -->
                        <exclude name="NAnt.MSNet.Tests.dll" />
                </task-assemblies>
                <framework 
                    name="net-1.0" 
                    family="net" 
                    version="1.0"
                    description="Microsoft .NET Framework 1.0"
                    runtimeengine=""
                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}" 
                    frameworkdirectory="${path::combine(installRoot, 'v1.0.3705')}" 
                    frameworkassemblydirectory="${path::combine(installRoot, 'v1.0.3705')}"
                    clrversion="1.0.3705"
                    >
                    <task-assemblies>
                        <!-- include .NET specific assemblies -->
                        <include name="tasks/net/*.dll" />
                        <!-- include .NET 1.0 specific assemblies -->
                        <include name="tasks/net/1.0/**/*.dll" />
                        <!-- include Microsoft.NET specific task assembly -->
                        <include name="NAnt.MSNetTasks.dll" />
                        <!-- exclude Microsoft.NET specific test assembly -->
                        <include name="NAnt.MSNet.Tests.dll" />
                    </task-assemblies>
                    <project>
                        <readregistry
                            property="installRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                            hive="LocalMachine" />
                        <readregistry
                            property="sdkInstallRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRoot"
                            hive="LocalMachine"
                            failonerror="false" />
                    </project>
                    <tasks>
                        <task name="csc">
                            <attribute name="exename">csc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">vbc</attribute>
                        </task>
                        <task name="jsc">
                            <attribute name="exename">jsc</attribute>
                        </task>
                        <task name="vjc">
                            <attribute name="exename">vjc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">resgen</attribute>
                        </task>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                        </task>
                        <task name="license">
                            <attribute name="exename">lc</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                        </task>
                        <task name="ildasm">
                            <attribute name="exename">ildasm</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework 
                    name="net-1.1" 
                    family="net" 
                    version="1.1"
                    description="Microsoft .NET Framework 1.1" 
                    runtimeengine=""
                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}" 
                    frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}" 
                    frameworkassemblydirectory="${path::combine(installRoot, 'v1.1.4322')}"
                    clrversion="1.1.4322"
                    >
                    <task-assemblies>
                        <!-- include .NET specific assemblies -->
                        <include name="tasks/net/*.dll" />
                        <!-- include .NET 1.1 specific assemblies -->
                        <include name="tasks/net/1.1/**/*.dll" />
                        <!-- include Microsoft.NET specific task assembly -->
                        <include name="NAnt.MSNetTasks.dll" />
                        <!-- exclude Microsoft.NET specific test assembly -->
                        <include name="NAnt.MSNet.Tests.dll" />
                    </task-assemblies>
                    <project>
                        <readregistry 
                            property="installRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                            hive="LocalMachine" />
                        <readregistry 
                            property="sdkInstallRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
                            hive="LocalMachine"
                            failonerror="false" />
                    </project>
                    <tasks>
                        <task name="csc">
                            <attribute name="exename">csc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">vbc</attribute>
                        </task>
                        <task name="jsc">
                            <attribute name="exename">jsc</attribute>
                        </task>
                        <task name="vjc">
                            <attribute name="exename">vjc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">resgen</attribute>
                        </task>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                        </task>
                        <task name="license">
                            <attribute name="exename">lc</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                        </task>
                        <task name="ildasm">
                            <attribute name="exename">ildasm</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework 
                    name="net-2.0b" 
                    family="net" 
                    version="2.0" 
                    description="Microsoft .NET Framework 2.0 Beta 1" 
                    runtimeengine=""
                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}" 
                    frameworkdirectory="${path::combine(installRoot, 'v2.0.40607')}" 
                    frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.40607')}"
                    clrversion="2.0.40607"
                    >
                    <task-assemblies>
                        <!-- include .NET specific assemblies -->
                        <include name="tasks/net/*.dll" />
                        <!-- include .NET 2.0 specific assemblies -->
                        <include name="tasks/net/2.0/**/*.dll" />
                        <!-- include Microsoft.NET specific task assembly -->
                        <include name="NAnt.MSNetTasks.dll" />
                        <!-- exclude Microsoft.NET specific test assembly -->
                        <include name="NAnt.MSNet.Tests.dll" />
                    </task-assemblies>
                    <project>
                        <readregistry
                            property="installRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                            hive="LocalMachine" />
                        <readregistry
                            property="sdkInstallRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
                            hive="LocalMachine"
                            failonerror="false" />
                    </project>
                    <tasks>
                        <task name="csc">
                            <attribute name="exename">csc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportswarnaserrorlist">true</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">vbc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportswarnaserrorlist">true</attribute>
                            <attribute name="supportsdocgeneration">true</attribute>
                        </task>
                        <task name="jsc">
                            <attribute name="exename">jsc</attribute>
                        </task>
                        <task name="vjc">
                            <attribute name="exename">vjc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">resgen</attribute>
                            <attribute name="supportsassemblyreferences">true</attribute>
                            <attribute name="supportsexternalfilereferences">true</attribute>
                        </task>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                        </task>
                        <task name="license">
                            <attribute name="exename">lc</attribute>
                            <attribute name="supportsassemblyreferences">true</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                        </task>
                        <task name="ildasm">
                            <attribute name="exename">ildasm</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework 
                    name="net-2.0" 
                    family="net" 
                    version="2.0" 
                    description="Microsoft .NET Framework 2.0" 
                    runtimeengine=""
                    sdkdirectory="${path::combine(sdkInstallRoot, 'bin')}" 
                    frameworkdirectory="${path::combine(installRoot, 'v2.0.50727')}" 
                    frameworkassemblydirectory="${path::combine(installRoot, 'v2.0.50727')}"
                    clrversion="2.0.50727"
                    >
                    <task-assemblies>
                        <!-- include .NET specific assemblies -->
                        <include name="tasks/net/*.dll" />
                        <!-- include .NET 2.0 specific assemblies -->
                        <include name="tasks/net/2.0/**/*.dll" />
                        <!-- include Microsoft.NET specific task assembly -->
                        <include name="NAnt.MSNetTasks.dll" />
                        <!-- exclude Microsoft.NET specific test assembly -->
                        <include name="NAnt.MSNet.Tests.dll" />
                    </task-assemblies>
                    <project>
                        <readregistry
                            property="installRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                            hive="LocalMachine" />
                        <readregistry
                            property="sdkInstallRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv2.0"
                            hive="LocalMachine"
                            failonerror="false" />
                    </project>
                    <tasks>
                        <task name="csc">
                            <attribute name="exename">csc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportswarnaserrorlist">true</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">vbc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportswarnaserrorlist">true</attribute>
                            <attribute name="supportsdocgeneration">true</attribute>
                        </task>
                        <task name="jsc">
                            <attribute name="exename">jsc</attribute>
                        </task>
                        <task name="vjc">
                            <attribute name="exename">vjc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">resgen</attribute>
                            <attribute name="supportsassemblyreferences">true</attribute>
                            <attribute name="supportsexternalfilereferences">true</attribute>
                        </task>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                        </task>
                        <task name="license">
                            <attribute name="exename">lc</attribute>
                            <attribute name="supportsassemblyreferences">true</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                        </task>
                        <task name="ildasm">
                            <attribute name="exename">ildasm</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework 
                    name="netcf-1.0" 
                    family="netcf" 
                    version="1.0"
                    description="Microsoft .NET Compact Framework 1.0" 
                    runtimeengine="" 
                    sdkdirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\bin')}" 
                    frameworkdirectory="${path::combine(installRoot, 'v1.1.4322')}" 
                    frameworkassemblydirectory="${path::combine(sdkInstallRoot, 'v1.0.5000\Windows CE')}"
                    clrversion="1.1.4322"
                    >
                    <task-assemblies>
                        <!-- this is not a supported runtime framework -->
                    </task-assemblies>
                    <project>
                        <readregistry
                            property="installRoot"
                            key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
                            hive="LocalMachine" />
                        <readregistry
                            property="sdkInstallRoot"
                            key="SOFTWARE\Microsoft\.NETCompactFramework\sdkInstallRoot"
                            hive="LocalMachine" />
                        <readregistry
                            property="sdkInstallRoot.DesktopFramework"
                            key="SOFTWARE\Microsoft\.NETFramework\sdkInstallRootv1.1"
                            hive="LocalMachine" />
                        <fail if="${not directory::exists(sdkInstallRoot.DesktopFramework)}">The .NET Framework 1.1 SDK is not installed.</fail>
                    </project>
                    <tasks>
                        <task name="csc">
                            <attribute name="exename">csc</attribute>
                            <attribute name="noconfig">true</attribute>
                            <attribute name="nostdlib">true</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">vbc</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">cfresgen</attribute>
                        </task>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                        </task>
                        <task name="license">
                            <attribute name="exename">${path::combine(sdkInstallRoot.DesktopFramework, 'bin/lc.exe')}</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                        </task>
                        <task name="ildasm">
                            <attribute name="exename">ildasm</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework
                    name="mono-1.0"
                    family="mono"
                    version="1.0"
                    description="Mono 1.0 Profile"
                    runtimeengine="${runtimeEngine}"
                    sdkdirectory="${sdkDirectory}"
                    frameworkdirectory="${frameworkDirectory}"
                    frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}"
                    clrversion="1.1.4322"
                    >
                    <task-assemblies>
                        <!-- include Mono specific assemblies -->
                        <include name="tasks/mono/*.dll" />
                        <!-- include Mono 1.0 specific assemblies -->
                        <include name="tasks/mono/1.0/**/*.dll" />
                    </task-assemblies>
                    <project>
                        <!-- 
                            first try using the DefaultCLR in HKLM\Novell\Mono, 
                            this is used by the Mono 1.0.1 installer (and later?)
                        -->
                        <readregistry
                            property="defaultCLR"
                            key="SOFTWARE\Novell\Mono\DefaultCLR"
                            hive="LocalMachine" 
                            failonerror="false" 
                        />
                        
                        <if test="${property::exists('defaultCLR')}">
                            <property name="monokey" value="SOFTWARE\Novell\Mono\${defaultCLR}" />
                        </if>
                        
                        <!-- 
                            if the defaultCLR registry value does not exist in 
                            HKLM\Novell\Mono, then try the HKML\Mono registry 
                            key as this was used for the Mono 1.0 installer
                        -->
                        <if test="${not property::exists('defaultCLR')}">
                            <readregistry
                                property="defaultCLR"
                                key="SOFTWARE\Mono\DefaultCLR"
                                hive="LocalMachine" 
                            />
                            <property name="monokey" value="SOFTWARE\Mono\${defaultCLR}" />
                        </if>

                        <readregistry
                            property="sdkInstallRoot"
                            key="${monokey}\SdkInstallRoot"
                            hive="LocalMachine" />
                        <readregistry
                            property="frameworkAssemblyDirectory"
                            key="${monokey}\FrameworkAssemblyDirectory"
                            hive="LocalMachine" />
                        <readregistry
                            property="configDir"
                            key="${monokey}\MonoConfigDir"
                            hive="LocalMachine" />

                        <!-- determine if we're dealing with a Mono 1.0.x release -->
                        <if test="${version::get-major(version::parse(defaultCLR)) == 1 and version::get-minor(version::parse(defaultCLR)) == 0}">
                            <!-- 
                                in Mono 1.0.x, the framework tools are located 
                                in the <install root>\lib directory
                            -->
                            <property name="frameworkDirectory" value="${frameworkAssemblyDirectory}" />
                            <property name="sdkDirectory" value="${frameworkAssemblyDirectory}" />
                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
                            <property name="resgen.tool" value="monoresgen" />
                            <property name="csc.supportsdocgeneration" value="false" />

                            <!-- 
                                Mono 1.0.1 installer incorrectly adds '\mono' to 
                                "MonoConfigDir" registry value
                            -->
                            <if test="${string::ends-with(configDir, 'etc\mono')}">
                                <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
                            </if>
                        </if>

                        <!-- determine if we're NOT dealing with a Mono 1.0.x release -->
                        <if test="${version::get-major(version::parse(defaultCLR)) != 1 or version::get-minor(version::parse(defaultCLR)) != 0}">
                            <!-- 
                                in Mono 1.1.x (and higher ?), the framework tools 
                                are located in the <install root>\lib\mono\<profile>
                                directory
                            -->
                            <property name="frameworkDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
                            <property name="sdkDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
                            <property name="resgen.tool" value="resgen" />
                            <property name="csc.supportsdocgeneration" value="true" />
                        </if>
                    </project>
                    <properties>
                    </properties>
                    <environment>
                        <env name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                        <env name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                    </environment>
                    <tasks>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="csc">
                            <attribute name="exename">${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mcs.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                            <attribute name="supportspackagereferences">true</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mbas.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">${resgen.tool}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="license">
                            <attribute name="hascommandlinecompiler">false</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework 
                    name="mono-2.0"
                    family="mono"
                    version="2.0"
                    description="Mono 2.0 Profile"
                    runtimeengine="${runtimeEngine}"
                    sdkdirectory="${sdkDirectory}"
                    frameworkdirectory="${frameworkDirectory}"
                    frameworkassemblydirectory="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}"
                    clrversion="2.0.40607"
                    >
                    <task-assemblies>
                        <!-- include Mono specific assemblies -->
                        <include name="tasks/mono/*.dll" />
                        <!-- include Mono 1.0 specific assemblies -->
                        <include name="tasks/mono/2.0/**/*.dll" />
                    </task-assemblies>
                    <project>
                        <!-- 
                            first try using the DefaultCLR in HKLM\Novell\Mono, 
                            this is used by the Mono 1.0.1 installer (and later?)
                        -->
                        <readregistry
                            property="defaultCLR"
                            key="SOFTWARE\Novell\Mono\DefaultCLR"
                            hive="LocalMachine" 
                            failonerror="false" 
                        />
                        
                        <if test="${property::exists('defaultCLR')}">
                            <property name="monokey" value="SOFTWARE\Novell\Mono\${defaultCLR}" />
                        </if>
                        
                        <!-- 
                            if the defaultCLR registry value does not exist in 
                            HKLM\Novell\Mono, then try the HKML\Mono registry 
                            key as this was used for the Mono 1.0 installer
                        -->
                        <if test="${not property::exists('defaultCLR')}">
                            <readregistry
                                property="defaultCLR"
                                key="SOFTWARE\Mono\DefaultCLR"
                                hive="LocalMachine" 
                            />
                            <property name="monokey" value="SOFTWARE\Mono\${defaultCLR}" />
                        </if>

                        <readregistry
                            property="sdkInstallRoot"
                            key="${monokey}\SdkInstallRoot"
                            hive="LocalMachine" />
                        <readregistry
                            property="frameworkAssemblyDirectory"
                            key="${monokey}\FrameworkAssemblyDirectory"
                            hive="LocalMachine" />
                        <readregistry
                            property="configDir"
                            key="${monokey}\MonoConfigDir"
                            hive="LocalMachine" />

                        <!-- determine if we're dealing with a Mono 1.0.x release -->
                        <if test="${version::get-major(version::parse(defaultCLR)) == 1 and version::get-minor(version::parse(defaultCLR)) == 0}">
                            <!-- 
                                in Mono 1.0.x, the framework tools are located 
                                in the <install root>\lib directory, except for
                                mbas and mcs
                            -->
                            <property name="frameworkDirectory" value="${frameworkAssemblyDirectory}" />
                            <property name="sdkDirectory" value="${frameworkAssemblyDirectory}" />
                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
                            <property name="resgen.tool" value="monoresgen" />
                            <property name="csc.supportsdocgeneration" value="false" />

                            <!-- 
                                Mono 1.0.1 installer incorrectly adds '\mono' to 
                                "MonoConfigDir" registry value
                            -->
                            <if test="${string::ends-with(configDir, 'etc\mono')}">
                                <property name="configDir" value="${string::replace(configDir, 'etc\mono', 'etc')}" />
                            </if>
                        </if>

                        <!-- determine if we're NOT dealing with a Mono 1.0.x release -->
                        <if test="${version::get-major(version::parse(defaultCLR)) != 1 or version::get-minor(version::parse(defaultCLR)) != 0}">
                            <!-- 
                                in Mono 1.1.x (and higher ?), all the framework 
                                tools are located in the <install root>\lib\mono\<profile>
                                directory
                                
                                however, for now only (g)mcs and wsdl2 are available
                                for the 2.0 profile, for the other tools we should 
                                use the 1.0 profile version
                            -->
                            <!--
                            <property name="frameworkDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
                            <property name="sdkDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/2.0')}" />
                            -->
                            <property name="frameworkDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
                            <property name="sdkDirectory" value="${path::combine(frameworkAssemblyDirectory, 'mono/1.0')}" />
                            <property name="runtimeEngine" value="${path::combine(frameworkAssemblyDirectory, 'mono.exe')}" />
                            <property name="resgen.tool" value="resgen" />
                            <property name="csc.supportsdocgeneration" value="true" />
                        </if>
                    </project>
                    <properties>
                    </properties>
                    <environment>
                        <env name="PATH" path="${path::combine(sdkInstallRoot, 'bin')};%PATH%" />
                        <env name="MONO_CFG_DIR" path="${configDir};%MONO_CFG_DIR%" />
                    </environment>
                    <tasks>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="csc">
                            <attribute name="exename">${path::combine(frameworkAssemblyDirectory, 'mono/2.0/gmcs.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                            <attribute name="supportspackagereferences">true</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">${path::combine(frameworkAssemblyDirectory, 'mono/1.0/mbas.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">${resgen.tool}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="license">
                            <attribute name="hascommandlinecompiler">false</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework 
                    name="sscli-1.0" 
                    family="sscli"
                    version="1.0"
                    description="Microsoft Shared Source CLI 1.0" 
                    runtimeengine="C:\sscli\build\v1.x86fstchk.rotor\clix.exe" 
                    sdkdirectory="C:\sscli\build\v1.x86fstchk.rotor\sdk\bin" 
                    frameworkdirectory="C:\sscli\build\v1.x86fstchk.rotor"
                    frameworkassemblydirectory="C:\sscli\build\v1.x86fstchk.rotor"
                    clrversion="1.0.3"
                    >
                    <task-assemblies>
                        <!-- this is not a supported runtime framework -->
                    </task-assemblies>
                    <project />
                    <tasks>
                        <task name="csc">
                            <attribute name="exename">csc</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                        </task>
                        <task name="jsc">
                            <attribute name="exename">jsc</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">resgen</attribute>
                        </task>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                        </task>
                        <task name="license">
                            <attribute name="hascommandlinecompiler">false</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="ildasm">
                            <attribute name="exename">ildasm</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                    </tasks>
                </framework>
            </platform>
            <platform name="unix" default="auto">
                <task-assemblies>
                        <!-- include NAnt task assemblies -->
                        <include name="*Tasks.dll" />
                        <!-- include NAnt test assemblies -->
                        <include name="*Tests.dll" />
                        <!-- include framework-neutral assemblies -->
                        <include name="tasks/*.dll" />
                        <!-- exclude Microsoft.NET specific task assembly -->
                        <exclude name="NAnt.MSNetTasks.dll" />
                        <!-- exclude Microsoft.NET specific test assembly -->
                        <exclude name="NAnt.MSNet.Tests.dll" />
                        <!-- exclude <solution> task assembly for now -->
                        <exclude name="NAnt.VSNetTasks.dll" />
                        <!-- exclude <solution> test assembly for now -->
                        <exclude name="NAnt.VSNet.Tests.dll" />
                        <!-- exclude win32 specific task assembly -->
                        <exclude name="NAnt.Win32Tasks.dll" />
                        <!-- exclude win32 specific test assembly -->
                        <exclude name="NAnt.Win32.Tests.dll" />
                </task-assemblies>
                <framework 
                    name="mono-1.0" 
                    family="mono" 
                    version="1.0"
                    description="Mono 1.0 Profile"
                    runtimeengine="${path::combine(prefix, 'bin/mono')}"
                    sdkdirectory="${frameworkdirectory}"
                    frameworkdirectory="${frameworkdirectory}"
                    frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/1.0')}"
                    clrversion="1.1.4322"
                    >
                    <task-assemblies>
                        <!-- include Mono specific assemblies -->
                        <include name="tasks/mono/*.dll" />
                        <!-- include Mono 1.0 specific assemblies -->
                        <include name="tasks/mono/1.0/**/*.dll" />
                    </task-assemblies>
                    <project>
                        <if test="${not pkg-config::exists('mono')}">
                            <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
                        </if>
                        <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
                        <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
                            <property name="frameworkdirectory" value="${path::combine(prefix, 'bin')}" />
                            <property name="resgen.tool" value="monoresgen" />
                            <property name="csc.supportsdocgeneration" value="false" />
                        </if>
                        <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
                            <property name="frameworkdirectory" value="${path::combine(prefix, 'lib/mono/1.0')}" />
                            <property name="resgen.tool" value="resgen" />
                            <property name="csc.supportsdocgeneration" value="true" />
                        </if>
                    </project>
                    <tasks>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="csc">
                            <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mcs.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                            <attribute name="supportspackagereferences">true</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
                        </task>
                        <task name="vbc">
                            <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mbas.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">${resgen.tool}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="license">
                            <attribute name="hascommandlinecompiler">false</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                    </tasks>
                </framework>
                <framework 
                    name="mono-2.0" 
                    family="mono" 
                    version="2.0"
                    description="Mono 2.0 Profile"
                    runtimeengine="${path::combine(prefix, 'bin/mono')}"
                    sdkdirectory="${frameworkdirectory}"
                    frameworkdirectory="${frameworkdirectory}"
                    frameworkassemblydirectory="${path::combine(prefix, 'lib/mono/2.0')}"
                    clrversion="2.0.40607"
                    >
                    <task-assemblies>
                        <!-- include Mono specific assemblies -->
                        <include name="tasks/mono/*.dll" />
                        <!-- include Mono 2.0 specific assemblies -->
                        <include name="tasks/mono/2.0/**/*.dll" />
                    </task-assemblies>
                    <project>
                        <if test="${not pkg-config::exists('mono')}">
                            <fail>Unable to locate 'mono' module using pkg-config. Download the Mono development packages from http://www.mono-project.com/downloads/.</fail>
                        </if>
                        <property name="prefix" value="${pkg-config::get-variable('mono', 'prefix')}" />
                        <if test="${not(pkg-config::is-atleast-version('mono', '1.1'))}">
                            <property name="frameworkdirectory" value="${path::combine(prefix, 'bin')}" />
                            <property name="resgen.tool" value="monoresgen" />
                            <property name="csc.supportsdocgeneration" value="false" />
                        </if>
                        <if test="${pkg-config::is-atleast-version('mono', '1.1')}">
                            <!-- 
                                in Mono 1.1.x (and higher ?), all the framework 
                                tools  are located in the <install root>\lib\mono\<profile>
                                directory
                                
                                however, for now only (g)mcs and wsdl2 are available
                                for the 2.0 profile, for the other tools we should 
                                use the 1.0 profile version
                            -->
                            <property name="frameworkdirectory" value="${path::combine(prefix, 'lib/mono/1.0')}" />
                            <property name="resgen.tool" value="resgen" />
                            <property name="csc.supportsdocgeneration" value="true" />
                        </if>
                    </project>
                    <tasks>
                        <task name="al">
                            <attribute name="exename">al</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="csc">
                            <attribute name="exename">${path::combine(prefix, 'lib/mono/2.0/gmcs.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                            <attribute name="supportspackagereferences">true</attribute>
                            <attribute name="supportsnowarnlist">true</attribute>
                            <attribute name="supportsdocgeneration">${csc.supportsdocgeneration}</attribute>
                        </task>
                        <task name="vbc">
                            <!-- there is no mbas for the 2.0 profile yet -->
                            <attribute name="exename">${path::combine(prefix, 'lib/mono/1.0/mbas.exe')}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="resgen">
                            <attribute name="exename">${resgen.tool}</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="delay-sign">
                            <attribute name="exename">sn</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                        <task name="license">
                            <attribute name="hascommandlinecompiler">false</attribute>
                        </task>
                        <task name="ilasm">
                            <attribute name="exename">ilasm</attribute>
                            <attribute name="useruntimeengine">true</attribute>
                        </task>
                    </tasks>
                </framework>
            </platform>
        </frameworks>
        <properties>
            <!-- properties defined here are accessible to all build files -->
            <!-- <property name="foo" value = "bar" readonly="false" /> -->
        </properties>
    </nant>
    <!--
        This section contains the log4net configuration settings.

        By default, no messages will be logged to the log4net logging infrastructure.

        To enable the internal logging, set the threshold attribute on the log4net element
        to "ALL".

        When internal logging is enabled, internal messages will be written to the 
        console.
    -->
    <log4net threshold="OFF">
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="[%c{2}:%m  - [%x] &lt;%X{auth}&gt;]%n" />
            </layout>
        </appender>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
            <param name="File" value="${APPDATA}\\NAnt\\NAnt.log" />
            <param name="AppendToFile" value="true" />
            <param name="MaxSizeRollBackups" value="2" />
            <param name="MaximumFileSize" value="500KB" />
            <param name="RollingStyle" value="Size" />
            <param name="StaticLogFileName" value="true" />
            <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="[%c{2}:%m  - [%x] &lt;%X{auth}&gt;]%n" />
            </layout>
        </appender>
        <!-- Setup the root category, add the appenders and set the default level -->
        <root>
            <!-- Only log messages with severity ERROR (or higher) -->
            <level value="ERROR" />
            <!-- Log messages to the console -->
            <appender-ref ref="ConsoleAppender" />
            <!-- Uncomment the next line to enable logging messages to the NAnt.log file -->
            <!-- <appender-ref ref="RollingLogFileAppender" /> -->
        </root>
        <!-- Specify the priority for some specific categories -->
        <!--
        <logger name="NAnt.Core.TaskBuilderCollection">
            <level value="DEBUG" />
        </logger>
        <logger name="NAnt">
            <level value="INFO" />
        </logger>
        -->
    </log4net>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <probing privatePath="lib" />
        </assemblyBinding>
    </runtime>
    <startup>
        <supportedRuntime version="v2.0.40607" />
        <supportedRuntime version="v1.1.4322" />
        <supportedRuntime version="v1.0.3705" />
    </startup>
</configuration>
