<?xml version="1.0" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. 
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with 
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project name="log4net" default="compile-all" xmlnds="http://tempuri.org/nant-vs.xsd">
  <!-- Global project settings -->
  <property name="log4net.basedir" value="." />
  <property name="project.build.config" value="debug" />
  <property name="project.build.package" value="false" />
  <property name="package.version" value="2.0.9"/>

  <!-- Include log4net helpers -->
  <include buildfile="${log4net.basedir}/log4net.include" />
  <!-- Targets that should always be executed -->
  <call target="set-build-configuration" />
  <call target="set-framework-configuration" />
  <!-- Targets that check settings -->
  <target name="check-htmlhelp-compiler">
    <if test="${not property::exists('htmlhelp.compiler')}">
      <readregistry
          property="htmlhelp.workshop.installroot"
          key="SOFTWARE\Microsoft\HTML Help Workshop\InstallDir"
          hive="CurrentUser"
          failonerror="false" />
      <if test="${property::exists('htmlhelp.workshop.installroot')}">
        <property 
            name="htmlhelp.compiler"
            value="${htmlhelp.workshop.installroot}/hhc.exe" />
      </if>
    </if>
    <if test="${not property::exists('htmlhelp.compiler')}">
      <!-- sysinfo task fails under x64 due to invalid property names - https://sourceforge.net/tracker/?func=detail&atid=402868&aid=1213185&group_id=31650 -->
      <sysinfo failonerror="false" />
      <property 
          name="htmlhelp.compiler"
          value="${sys.os.folder.programfiles}/HTML Help Worshop/hhc.exe" />
    </if>
  </target>
  <!-- Displays configuration info, usefull for working out why log4net doesn't build -->
  <target name="display-setup" depends="check-htmlhelp-compiler">
    <!-- .NET Framework 1.0 -->
    <if test="${framework::exists('net-1.0')}">
      <property name="nant.settings.currentframework" value="net-1.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('net-1.0')}">
      <echo message=".NET Framework 1.0 runtime is not available." />
    </if>
    <!-- .NET Framework 1.1 -->
    <if test="${framework::exists('net-1.1')}">
      <property name="nant.settings.currentframework" value="net-1.1" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('net-1.1')}">
      <echo message=".NET Framework 1.1 runtime is not available." />
    </if>
    <!-- .NET Framework 2.0 -->
    <if test="${framework::exists('net-2.0')}">
      <property name="nant.settings.currentframework" value="net-2.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('net-2.0')}">
      <echo message=".NET Framework 2.0 runtime is not available." />
    </if>
    <!-- .NET Framework 3.5 -->
    <if test="${framework::exists('net-3.5')}">
      <property name="nant.settings.currentframework" value="net-3.5" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('net-3.5')}">
      <echo message=".NET Framework 3.5 runtime is not available." />
    </if>
    <!-- .NET Framework 4.0 -->
    <if test="${framework::exists('net-4.0')}">
      <property name="nant.settings.currentframework" value="net-4.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('net-4.0')}">
      <echo message=".NET Framework 4.0 runtime is not available." />
    </if>
    <!-- .NET Compact Framework 1.0 -->
    <if test="${framework::exists('netcf-1.0')}">
      <property name="nant.settings.currentframework" value="netcf-1.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('netcf-1.0')}">
      <echo message=".NET Compact Framework 1.0 runtime is not available." />
    </if>
    <!-- .NET Compact Framework 2.0 -->
    <if test="${framework::exists('netcf-2.0')}">
      <property name="nant.settings.currentframework" value="netcf-2.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('netcf-2.0')}">
      <echo message=".NET Compact Framework 2.0 runtime is not available." />
    </if>
    <!-- Mono 1.0 -->
    <if test="${framework::exists('mono-1.0')}">
      <property name="nant.settings.currentframework" value="mono-1.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('mono-1.0')}">
      <echo message="Mono 1.0 runtime is not available." />
    </if>
    <!-- Mono 2.0 -->
    <if test="${framework::exists('mono-2.0')}">
      <property name="nant.settings.currentframework" value="mono-2.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('mono-2.0')}">
      <echo message="Mono 2.0 runtime is not available." />
    </if>
    <!-- Mono 3.5 -->
    <if test="${framework::exists('mono-3.5')}">
      <property name="nant.settings.currentframework" value="mono-3.5" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('mono-3.5')}">
      <echo message="Mono 3.5 runtime is not available." />
    </if>
    <!-- Mono 4.0 -->
    <if test="${framework::exists('mono-4.0')}">
      <property name="nant.settings.currentframework" value="mono-4.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('mono-4.0')}">
      <echo message="Mono 4.0 runtime is not available." />
    </if>
    <!-- SSCLI 1.0 -->
    <if test="${framework::exists('sscli-1.0')}">
      <property name="nant.settings.currentframework" value="sscli-1.0" />
      <call target="display-target-framework" />
    </if>
    <if test="${not framework::exists('sscli-1.0')}">
      <echo message="SSCLI 1.0 runtime is not available." />
    </if>
    <!-- HTML Help Compiler -->
    <echo message="htmlhelp.compiler: ${htmlhelp.compiler}" />
  </target>
  <target name="display-target-framework">
    <echo message="" />
    <echo message="----------------------------------------------------------" />
    <echo message=" ${framework::get-description(framework::get-target-framework())}" />
    <echo message="----------------------------------------------------------" />
    <echo message="" />
    <echo message="framework : ${framework::get-target-framework()}" />
    <echo message="description : ${framework::get-description(framework::get-target-framework())}" />
    <if test="${framework::sdk-exists(framework::get-target-framework())}">
      <echo message="sdk directory : ${framework::get-sdk-directory(framework::get-target-framework())}" />
    </if>
    <if test="${not framework::sdk-exists(framework::get-target-framework())}">
      <echo message="sdk directory : &lt;not configured/available&gt;" />
    </if>
    <echo message="framework directory : ${framework::get-framework-directory(framework::get-target-framework())}" />
    <echo message="assembly directory : ${framework::get-assembly-directory(framework::get-target-framework())}" />
    <echo message="" />
  </target>
  <!-- Target for setting the package configuration -->
  <target name="set-package-configuration">
    <property name="current.package.name" value="${project::get-name()}-${package.version}" />
    <property name="current.package.src.dir" value="build/${current.package.name}-src" />
    <property name="current.package.src.zipfile" value="${project::get-name()}-${package.version}-src.zip" />
    <delete dir="${current.package.src.dir}" if="${directory::exists(current.package.src.dir)}" />
    <mkdir dir="${current.package.src.dir}" />
    <property name="current.package.bin.dir" value="build/${current.package.name}-bin" />
    <property name="current.package.bin.zipfile" value="${project::get-name()}-${package.version}-bin.zip" />
    <delete dir="${current.package.bin.dir}" if="${directory::exists(current.package.bin.dir)}" />
    <mkdir dir="${current.package.bin.dir}" />
  </target>
  <!-- Target for compiling all build configurations for all runtime configurations -->
  <target name="compile-all" description="Compile all build configurations for all runtime configurations"
          depends="generate-assembly-description">
    <echo message="Compiling all build configurations for all runtime configurations." />
    <call target="set-debug-build-configuration" />
    <call target="compile-build" />
    <call target="set-release-build-configuration" />
    <call target="compile-build" />
  </target>
  <!-- Target for compiling all build configurations for the current runtime configurations -->
  <target name="compile-runtime" description="Compile all build configurations for the current target framework">
    <echo message="Compiling all build configurations for ${framework::get-description(framework::get-target-framework())}." />
    <call target="set-debug-build-configuration" />
    <!-- make sure that the runtime properties that rely on build configuration information are refreshed -->
    <call target="set-runtime-configuration" />
    <call target="compile-${framework::get-target-framework()}" />
    <call target="set-release-build-configuration" />
    <!-- make sure that the runtime properties that rely on build configuration information are refreshed -->
    <call target="set-runtime-configuration" />
    <call target="compile-${framework::get-target-framework()}" />
  </target>
  <!-- Target for compiling all runtime configurations in the current build configuration -->
  <target name="compile-build" description="Compile current build configurations for all runtime configurations">
    <echo message="Compiling all framework versions for the ${current.build.config} build configuration." />
    <!-- NETCF_1_0 -->
    <if test="${framework::exists('netcf-1.0')}">
      <call target="compile-netcf-1.0" />
    </if>
    <!--if test="${not framework::exists('netcf-1.0')}">
      <if test="${property::exists('project.build.package') and project.build.package}">
        <fail message="The .NET Compact Framework 1.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo 
            message="The .NET Compact Framework 1.0 is not available. Build skipped." />
      </if>
    </if-->
    <!-- NETCF_2_0 -->
    <if test="${framework::exists('netcf-2.0')}">
      <call target="compile-netcf-2.0" />
    </if>
    <!--if test="${not framework::exists('netcf-2.0')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'netcf/2.0/debug')) and directory::exists(path::combine(bin.dir, 'netcf/2.0/release')) and directory::exists(path::combine(bin.dir, 'netcf/2.0/oldkey')))}">
        <fail message="The .NET Compact Framework 2.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo 
            message="The .NET Compact Framework 2.0 is not available. Build skipped." />
      </if>
    </if-->
    <!-- NET_1_0 -->
    <if test="${framework::exists('net-1.0')}">
      <call target="compile-net-1.0" />
      <call target="compile-cli-1.0" />
    </if>
    <if test="${not framework::exists('net-1.0')}">
        <echo message="The .NET Framework 1.0 is not available. Build skipped." />
    </if>
    <!-- NET_1_1 -->
    <if test="${framework::exists('net-1.1')}">
      <call target="compile-net-1.1" />
    </if>
    <if test="${not framework::exists('net-1.1')}">
        <echo message="The .NET Framework 1.1 is not available. Build skipped." />
    </if>
    <!-- NET_2_0 -->
    <if test="${framework::exists('net-2.0')}">
      <call target="compile-net-2.0" />
    </if>
    <if test="${not framework::exists('net-2.0')}">
        <echo message="The .NET Framework 2.0 is not available. Build skipped." />
    </if>
    <!-- NET_3_5 -->
    <if test="${framework::exists('net-3.5')}">
      <call target="compile-net-3.5" />
      <call target="compile-net-3.5-cp" />
    </if>
    <if test="${not framework::exists('net-3.5')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'net/3.5/debug')) and directory::exists(path::combine(bin.dir, 'net/3.5/release')) and directory::exists(path::combine(bin.dir, 'net/3.5/oldkey')) and directory::exists(path::combine(bin.dir, 'net-cp/3.5/debug')) and directory::exists(path::combine(bin.dir, 'net-cp/3.5/release')) and directory::exists(path::combine(bin.dir, 'net-cp/3.5/oldkey')))}">
        <fail message="The .NET Framework 3.5 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="The .NET Framework 3.5 is not available. Build skipped." />
      </if>
    </if>
    <!-- NET_4_0 -->
    <if test="${framework::exists('net-4.0')}">
      <call target="compile-net-4.0" />
      <call target="compile-net-4.0-cp" />
      <call target="compile-net-4.5" />
    </if>
    <if test="${not framework::exists('net-4.0')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'net/4.0/debug')) and directory::exists(path::combine(bin.dir, 'net/4.0/release')) and directory::exists(path::combine(bin.dir, 'net/4.0/oldkey')) and directory::exists(path::combine(bin.dir, 'net-cp/4.0/debug')) and directory::exists(path::combine(bin.dir, 'net-cp/4.0/release')) and directory::exists(path::combine(bin.dir, 'net-cp/4.0/oldkey')))}">
        <fail message="The .NET Framework 4.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="The .NET Framework 4.0 is not available. Build skipped." />
      </if>
    </if>
    <!-- MONO_1_0 -->
    <if test="${framework::exists('mono-1.0')}">
      <call target="compile-mono-1.0" />
    </if>
    <if test="${not framework::exists('mono-1.0')}">
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="Mono 1.0 is not available. Build skipped." />
      </if>
    </if>
    <!-- MONO_2_0 -->
    <if test="${framework::exists('mono-2.0')}">
      <call target="compile-mono-2.0" />
    </if>
    <if test="${not framework::exists('mono-2.0')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'mono/2.0/debug')) and directory::exists(path::combine(bin.dir, 'mono/2.0/release')) and directory::exists(path::combine(bin.dir, 'mono/2.0/oldkey')))}">
        <fail message="Mono 2.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="Mono 2.0 is not available. Build skipped." />
      </if>
    </if>
    <!-- MONO_3_5 -->
    <if test="${framework::exists('mono-3.5')}">
      <call target="compile-mono-3.5" />
    </if>
    <if test="${not framework::exists('mono-3.5')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'mono/3.5/debug')) and directory::exists(path::combine(bin.dir, 'mono/3.5/release')) and directory::exists(path::combine(bin.dir, 'mono/3.5/oldkey')))}">
        <fail message="Mono 3.5 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="Mono 3.5 is not available. Build skipped." />
      </if>
    </if>
    <!-- MONO_4_0 -->
    <if test="${framework::exists('mono-4.0')}">
      <call target="compile-mono-4.0" />
    </if>
    <if test="${not framework::exists('mono-4.0')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'mono/4.0/debug')) and directory::exists(path::combine(bin.dir, 'mono/4.0/release')) and directory::exists(path::combine(bin.dir, 'mono/4.0/oldkey')))}">
        <fail message="Mono 4.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="Mono 4.0 is not available. Build skipped." />
      </if>
    </if>
    <!-- SSCLI_1_0 -->
    <if test="${framework::exists('sscli-1.0')}">
      <call target="compile-sscli-1.0" />
    </if>
    <!--if test="${not framework::exists('sscli-1.0')}">
      <if test="${property::exists('project.build.package') and project.build.package}">
        <fail message="SSCLI 1.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="SSCLI 1.0 is not available. Build skipped." />
      </if>
    </if-->
    <call target="compile-netstandard" />
  </target>
  <target name="compile" description="Builds the current build configuration for the current target framework." depends="check-current-build-config">
    <call target="compile-${framework::get-target-framework()}" />
  </target>
  <target name="compile-netcf-1.0" description="Builds .NET Compact Framework 1.0 version" depends="set-netcf-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
          <echo message="The generated key file should be stored in the log4net base directory." />
          <echo message="The release build will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/log4net.snk')}">
        <!-- copy the log4net key file to the location where the compiler expects it to be -->
        <copy file="${log4net.basedir}/log4net.snk" todir="${current.bin.dir}/../../../" />
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Data.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
  </target>
  <target name="compile-netcf-2.0" description="Builds .NET Compact Framework 2.0 version" depends="set-netcf-2.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Data.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-1.0" description="Builds .NET Framework 1.0 version" depends="set-net-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/old-log4net.snk')}">
        <!-- copy the log4net key file to the location where
             the compiler expects it to be -->
        <copy file="${log4net.basedir}/old-log4net.snk"
              tofile="${current.bin.dir}/../../../log4net.snk"
              overwrite="true"/>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <copy file="${log4net.basedir}/log4net.snk"
          todir="${current.bin.dir}/../../../"
          overwrite="true"/>
    <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-1.1" description="Builds .NET Framework 1.1 version" depends="set-net-1.1-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/old-log4net.snk')}">
        <!-- copy the log4net key file to the location where
             the compiler expects it to be -->
        <copy file="${log4net.basedir}/old-log4net.snk"
              tofile="${current.bin.dir}/../../../log4net.snk"
              overwrite="true"/>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <copy file="${log4net.basedir}/log4net.snk"
          todir="${current.bin.dir}/../../../"
          overwrite="true"/>
    <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-2.0" description="Builds .NET Framework 2.0 version" depends="set-net-2.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <include name="System.Configuration.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-3.5" description="Builds .NET Framework 3.5 version" depends="set-net-3.5-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Core.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <include name="System.Configuration.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-3.5-cp" description="Builds .NET Framework 3.5 Client Profile version" depends="set-net-3.5-cp-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Core.dll" />
          <include name="System.Data.dll" />
          <include name="System.Xml.dll" />
          <include name="System.Configuration.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-4.0" description="Builds .NET Framework 4.0 version" depends="set-net-4.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Core.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <include name="System.Configuration.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-4.0-cp" description="Builds .NET Framework 4.0 Client Profile version" depends="set-net-4.0-cp-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Core.dll" />
          <include name="System.Data.dll" />
          <include name="System.Xml.dll" />
          <include name="System.Configuration.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-net-4.5" description="Builds .NET Framework 4.5 version" depends="set-net-4.5-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Core.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <include name="System.Configuration.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <include name="System.Configuration.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-mono-1.0" description="Builds Mono 1.0 version" depends="set-mono-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/old-log4net.snk')}">
        <mkdir dir="${current.bin.dir}/../oldkey" />
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="System.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <warning number="0618" />
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}"  nostdlib="false" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <warning number="0618" />
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-mono-2.0" description="Builds Mono 2.0 version" depends="set-mono-2.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/old-log4net.snk')}">
        <mkdir dir="${current.bin.dir}/../oldkey" />
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- workaround for Mono bug #61902 -->
          <!--warning number="0618" /-->
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="System.dll" />
          <include name="System.Configuration.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <!--warning number="0618" /-->
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Configuration.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <!--warning number="0618" /-->
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Configuration.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-mono-3.5" description="Builds Mono 3.5 version" depends="set-mono-3.5-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/old-log4net.snk')}">
        <mkdir dir="${current.bin.dir}/../oldkey" />
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- workaround for Mono bug #61902 -->
          <!--warning number="0618" /-->
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="System.dll" />
          <include name="System.Configuration.dll" />
          <include name="System.Core.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <!--warning number="0618" /-->
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Configuration.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <!--warning number="0618" /-->
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Configuration.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-mono-4.0" description="Builds Mono 4.0 version" depends="set-mono-4.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the old log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/old-log4net.snk')}">
        <mkdir dir="${current.bin.dir}/../oldkey" />
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'old-log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- workaround for Mono bug #61902 -->
          <!--warning number="0618" /-->
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="System.dll" />
          <include name="System.Core.dll" />
          <include name="System.Configuration.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <csc if="${current.build.config.release}" keyfile="${path::combine(log4net.basedir, 'log4net.snk')}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <!--warning number="0618" /-->
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Configuration.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
    <csc if="${current.build.config.debug}" nostdlib="false" noconfig="true" warnaserror="false" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- workaround for Mono bug #61902 -->
        <!--warning number="0618" /-->
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="System.dll" />
        <include name="System.Configuration.dll" />
        <include name="System.Core.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <target name="compile-sscli-1.0" description="Builds SSCLI 1.0 version" depends="set-sscli-1.0-runtime-configuration, check-log4net-basedir, clean-current-bin-dir">
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Key file not found. You can generate a key file by running 'sn -k log4net.snk'." />
          <echo message="The generated key file should be stored in the log4net base directory." />
          <echo message="The release build will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/log4net.snk')}">
        <!-- copy the log4net key file to the location where the compiler expects it to be -->
        <copy file="${log4net.basedir}/log4net.snk" todir="${current.bin.dir}/../../../" />
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
  </target>
  <!--
      This version is built to run on any CLI 1.0 (ECMA 335) standard runtime.
      The build excludes any code that is platform specific.
      The .NET 1.0 compiler and library are used to build the assembly.

      The log4net CLI 1.0 assembly is runtime compatible with the
      following frameworks:

      * Microsoft(R) .NET Framework 1.0 (and higher)
      * Mono 1.0 (and higher)

      We only provide this "flavor" of log4net in release
      configuration because debugging information is not standardized
      and would be too closely tied to a specific implementation.
  -->
  <target name="compile-cli-1.0" description="Builds CLI 1.0 version" depends="set-cli-1.0-configuration, check-log4net-basedir, clean-current-bin-dir" if="${current.build.config.release}">
    <delete>
      <fileset basedir="${current.bin.dir}">
        <include name="log4net.*" />
      </fileset>
    </delete>
    <!-- initialize the temp.build.skip property to false -->
    <property name="temp.build.skip" value="false" />
    <if test="${current.build.config.release}">
      <!-- check if the log4net key file is available -->
      <if test="${not file::exists(log4net.basedir + '/old-log4net.snk')}">
        <if test="${property::exists('project.build.package') and project.build.package}">
          <fail message="Old key file not found." />
        </if>
        <if test="${not(property::exists('project.build.package') and project.build.package)}">
          <echo message="Old key file not found."/>
          <echo message="The release build using the old key will be skipped." />
          <property name="temp.build.skip" value="true" />
        </if>
      </if>
      <if test="${file::exists(log4net.basedir + '/old-log4net.snk')}">
        <!-- copy the log4net key file to the location where
             the compiler expects it to be -->
        <copy file="${log4net.basedir}/old-log4net.snk"
              tofile="${current.bin.dir}/../../../log4net.snk"
              overwrite="true"/>
      </if>
    </if>
    <if test="${not temp.build.skip}">
      <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <nowarn>
          <!-- informational assembly version uses a free form text -->
          <warning number="1607" />
        </nowarn>
        <sources basedir="${log4net.basedir}/src">
          <include name="**/*.cs" />
        </sources>
        <resources failonempty="true">
          <include name="${log4net.basedir}/NOTICE" />
          <include name="${log4net.basedir}/LICENSE" />
        </resources>
        <references>
          <include name="mscorlib.dll" />
          <include name="System.dll" />
          <include name="System.Data.dll" />
          <include name="System.Web.dll" />
          <include name="System.Xml.dll" />
          <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
          <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
        </references>
      </csc>
    </if>
    <copy file="${log4net.basedir}/log4net.snk"
          todir="${current.bin.dir}/../../../"
          overwrite="true"/>
    <csc nostdlib="true" noconfig="true" warnaserror="true" target="library" debug="${current.build.debug}" optimize="${current.build.optimize}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <nowarn>
        <!-- informational assembly version uses a free form text -->
        <warning number="1607" />
      </nowarn>
      <sources basedir="${log4net.basedir}/src">
        <include name="**/*.cs" />
      </sources>
      <resources failonempty="true">
        <include name="${log4net.basedir}/NOTICE" />
        <include name="${log4net.basedir}/LICENSE" />
      </resources>
      <references>
        <include name="mscorlib.dll" />
        <include name="System.dll" />
        <include name="System.Data.dll" />
        <include name="System.Web.dll" />
        <include name="System.Xml.dll" />
        <!-- allow for third party assemblies to be referenced by just storing them in the lib/<framework family>/<framework version>/<build configuration> directory -->
        <include name="lib/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}/*.dll" />
      </references>
    </csc>
  </target>
  <!-- Target for generating docs for all runtime configurations -->
  <target name="generate-sdkdoc-all" depends="check-current-build-config">
    <echo message="Generating SDK documentation temporarily disabled." />
    <!--
        <echo message="Generating SDK documentation based on the ${current.build.config} build configuration for all runtime configurations." />
        <if test="${framework::exists('netcf-1.0')}">
        <call target="set-netcf-1.0-runtime-configuration" />
        <call target="generate-sdkdoc" />
        </if>
        <if test="${framework::exists('netcf-2.0')}">
        <call target="set-netcf-2.0-runtime-configuration" />
        <call target="generate-sdkdoc" />
        </if>
        <if test="${framework::exists('net-1.0')}">
        <call target="set-net-1.0-runtime-configuration" />
        <call target="generate-sdkdoc" />
        </if>
        <if test="${framework::exists('net-1.1')}">
        <call target="set-net-1.1-runtime-configuration" />
        <call target="generate-sdkdoc" />
        </if>
    -->
  </target>
  <!-- Target for generating docs for build configurations -->
  <target name="generate-sdkdoc-step1" depends="compile, check-htmlhelp-compiler, check-current-sdkdoc-dir, check-current-sdkdoc-debug, clean-current-sdkdoc-dir">
    <mkdir dir="${current.sdkdoc.dir}"/>
    <!-- TODO: add a step for running SHFB here -->
  </target>
  <!-- Remove everything except the help file itself from the current SDK documentation directory -->
  <target name="generate-sdkdoc" depends="generate-sdkdoc-step1">
    <delete>
      <fileset basedir="${current.sdkdoc.dir}">
        <include name="**/*" />
        <exclude name="**/*.chm" />
      </fileset>
    </delete>
  </target>
  <!-- Build the SDK documentation for the website -->
  <target name="generate-sdkdoc-for-site"
          depends="set-release-build-configuration,generate-sdkdoc-step1">
    <mkdir dir="target/site/release/sdk"/>
    <copy todir="target/site/release/sdk">
      <fileset basedir="${current.sdkdoc.dir}">
        <include name="**/*" />
        <exclude name="**/*.chm" />
        <exclude name="**/*.hh?" />
        <exclude name="**/*.log" />
      </fileset>
    </copy>
  </target>
  <target name="generate-site">
    <property name="mvn" value="mvn"/>
    <if test="${platform::is-windows()}">
      <property name="mvn" value="mvn.cmd"/>
    </if>
    <exec program="${mvn}" commandline="site:site install"/>
  </target>
  <target name="package" description="Build and Package distribution">
    <!-- set flag to indicating that this is a package build -->
    <property name="project.build.package" value="true" />
    <call target="set-package-configuration" />
    <!-- copies the sources to the current package directory -->
    <call target="package-src" />
    <!-- compile all build configurations for all runtime configurations  -->
    <call target="compile-all" />
    <!-- generate the sdk docs using the release build configuration for all runtime configuration -->
    <call target="set-release-build-configuration" />
    <call target="package-bin" />
    <call target="create-nuget-package" />
  </target>
  <target name="package-src">
    <copy todir="${current.package.src.dir}">
      <fileset basedir=".">
        <include name="KEYS"/>
        <include name="LICENSE"/>
        <include name="NOTICE"/>
        <include name="README.txt"/>
        <include name="STATUS.txt"/>
        <include name="build.cmd"/>
        <include name="log4net.build"/>
        <include name="log4net.include"/>
        <include name="log4net.nuspec"/>
        <include name="log4net.snk"/>
        <include name="log4net.snk.readme"/>
        <include name="old-log4net.snk.gpg"/>
        <include name="pom.xml"/>

        <include name="examples/**" />
        <include name="extensions/**" />
        <include name="netstandard/**" />
        <include name="src/**" />
        <include name="tests/**" />

        <exclude name="**/*.suo" />
        <exclude name="**/bin/**" />
        <exclude name="**/build/**" />
        <exclude name="**/log4net*.xml" />
        <exclude name="**/obj/**" />
        <exclude name="**/*.csproj.user" />
        <exclude name="**/*.vbproj.user" />

        <exclude name="src/GeneratedAssemblyInfo.cs" />
        <exclude name="netstandard/TestResult.xml"/>
        <exclude name="netstandard/**/project.lock.json"/>
        <exclude name="tests/doc/**" />
        <exclude name="tests/lib/net/**" />
        <exclude name="tests/lib/mono/**" />
        <exclude name="tests/lib/netcf/**" />
      </fileset>
    </copy>

    <!-- delete the specified zipfile if it already exists -->
    <delete>
      <fileset basedir="build">
        <include name="${current.package.src.zipfile}" />
      </fileset>
    </delete>
    <zip zipfile="build/${current.package.src.zipfile}" ziplevel="9"
         includeemptydirs="true">
      <fileset basedir="${current.package.src.dir}"
               prefix="${current.package.name}">
        <include name="**"/>
      </fileset>
    </zip>
  </target>
  <target name="package-bin" depends="generate-sdkdoc-step1,generate-site">
    <copy todir="${current.package.bin.dir}">
      <fileset basedir=".">
        <include name="KEYS"/>
        <include name="LICENSE"/>
        <include name="NOTICE"/>
        <include name="README.txt"/>
        <include name="STATUS.txt"/>
        <include name="bin/**/release/**"/>
      </fileset>
    </copy>
    <copy todir="${current.package.bin.dir}">
      <fileset basedir="${current.sdkdoc.dir}">
        <include name="**/*.chm" />
      </fileset>
    </copy>
    <property name="current.package.doc.dir"
              value="${current.package.bin.dir}/doc"/>
    <mkdir dir="${current.package.doc.dir}/release/sdk"/>
    <copy todir="${current.package.doc.dir}/release/sdk">
      <fileset basedir="${current.sdkdoc.dir}">
        <include name="**/*" />
        <exclude name="**/*.chm" />
        <exclude name="**/*.hh?" />
        <exclude name="**/*.log" />
      </fileset>
    </copy>
    <copy todir="${current.package.doc.dir}">
      <fileset basedir="target/site">
        <include name="**"/>
      </fileset>
    </copy>

    <delete>
      <fileset basedir="build">
        <include name="${current.package.bin.dir}-*key.zip" />
      </fileset>
    </delete>
    <zip zipfile="${current.package.bin.dir}-newkey.zip" ziplevel="9">
      <fileset basedir="${current.package.bin.dir}"
               prefix="${current.package.name}">
        <include name="**"/>
      </fileset>
    </zip>

    <!-- binary dist with old strong name key -->
    <foreach item="Folder" property="platform-and-version">
      <in>
        <items>
          <include name="bin/*/*"/>
        </items>
      </in>
      <do>
        <copy todir="${current.package.bin.dir}/${string::replace(platform-and-version, project::get-base-directory(), '')}/release"
              overwrite="true">
          <fileset basedir="${platform-and-version}/oldkey">
            <include name="**"/>
          </fileset>
        </copy>
      </do>
    </foreach>
    <zip zipfile="${current.package.bin.dir}-oldkey.zip" ziplevel="9">
      <fileset basedir="${current.package.bin.dir}"
               prefix="${current.package.name}">
        <include name="**"/>
      </fileset>
    </zip>
  </target>
  <target name="create-nuget-package">
    <exec program="nuget.exe" commandline="pack log4net.nuspec"/>
  </target>
  
  <target name="generate-assembly-description">
    <if test="${not(property::exists('source.git.revision'))}">
      <property name="source.git.revision" value="0"/>
      <property name="source.git.url" value="https://git-wip-us.apache.org/repos/asf/logging-log4net.git"/>
      <property name="assembly.description"
                value="The Apache Software Foundation log4net Logging Framework"/>
      <if test="${directory::exists('.git')}">
        <exec program="git" workingdir="." verbose="false"
              output="_gitrevision" failonerror="true" >
          <arg value="log"/>
          <arg value="-1" />
          <arg line="--pretty=format:%h" />
        </exec>
        <exec program="git" workingdir="." verbose="false"
              output="_giturl" failonerror="true" >
          <arg value="config" />
          <arg line="remote.origin.url" />
        </exec>
        <sleep milliseconds="500" />
        <loadfile property="source.git.revision" file="_gitrevision"/>
        <loadfile property="source.git.url" file="_giturl"/>
        <delete file="_gitrevision"/>
        <delete file="_giturl"/>
        <property name="assembly.description"
                  value="The Apache Software Foundation log4net Logging Framework built from git revision ${string::trim(source.git.revision)} of ${string::trim(source.git.url)}"/>
      </if>
      <delete file="src/GeneratedAssemblyInfo.cs"/>
      <asminfo language="CSharp" output="src/GeneratedAssemblyInfo.cs">
        <imports>
          <import namespace="System.Reflection"/>
        </imports>
        <attributes>
          <attribute type="AssemblyDescriptionAttribute"
                     value="${assembly.description}"/>
        </attributes>
      </asminfo>
    </if>
  </target>
  <target name="compile-netstandard">
    <exec program="dotnet" workingdir="netstandard"
          failonerror="false" resultproperty="dotnet.available">
      <arg value="restore"/>
    </exec>
    <if test="${dotnet.available == '0'}">
      <exec program="dotnet" workingdir="netstandard">
        <arg value="build"/>
        <arg value="log4net"/>
        <arg if="${current.build.config.release}" value="-c"/>
        <arg if="${current.build.config.release}" value="Release"/>
      </exec>
      <mkdir dir="${log4net.basedir}/bin/netstandard/1.3"/>
      <if test="${current.build.config.release}">
        <move todir="${log4net.basedir}/bin/netstandard/1.3/Release">
          <fileset basedir="netstandard/log4net/bin/Release/netstandard1.3"/>
        </move>
      </if>
      <ifnot test="${current.build.config.release}">
        <move todir="${log4net.basedir}/bin/netstandard/1.3/Debug">
          <fileset basedir="netstandard/log4net/bin/Debug/netstandard1.3"/>
        </move>
      </ifnot>
    </if>
    <if test="${dotnet.available != '0'}">
      <echo message=".NET Core is not available." />
    </if>
  </target>
</project>
