<?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="1.2.12"/>

  <!-- 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>
    <!-- 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')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'net/1.0/debug')) and directory::exists(path::combine(bin.dir, 'net/1.0/release')) and directory::exists(path::combine(bin.dir, 'net/1.0/oldkey')))}">
        <fail message="The .NET Framework 1.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="The .NET Framework 1.0 is not available. Build skipped." />
      </if>
    </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')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'net/1.1/debug')) and directory::exists(path::combine(bin.dir, 'net/1.1/release')) and directory::exists(path::combine(bin.dir, 'net/1.1/oldkey')))}">
        <fail message="The .NET Framework 1.1 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="The .NET Framework 1.1 is not available. Build skipped." />
      </if>
    </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')}">
      <if test="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'net/2.0/debug')) and directory::exists(path::combine(bin.dir, 'net/2.0/release')) and directory::exists(path::combine(bin.dir, 'net/2.0/oldkey')))}">
        <fail message="The .NET Framework 2.0 is not available." />
      </if>
      <if test="${not(property::exists('project.build.package') and project.build.package)}">
        <echo message="The .NET Framework 2.0 is not available. Build skipped." />
      </if>
    </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" />
    </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="${property::exists('project.build.package') and project.build.package and not(directory::exists(path::combine(bin.dir, 'mono/1.0/debug')) and directory::exists(path::combine(bin.dir, 'mono/1.0/release')) and directory::exists(path::combine(bin.dir, 'mono/1.0/oldkey')))}">
        <fail message="Mono 1.0 is not available." />
      </if>
      <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>
    <!-- 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-->
  </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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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-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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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-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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" 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" />
      </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}" 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" />
      </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="true" target="library" debug="${current.build.debug}" 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" />
        </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}" 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" />
      </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}" 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" />
      </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-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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/../oldkey/log4net.dll" doc="${current.bin.dir}/../oldkey/log4net.xml">
        <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}" define="${current.build.defines.csc}" output="${current.bin.dir}/log4net.dll" doc="${current.bin.dir}/log4net.xml">
      <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>
    -->
    <!-- NAnt doesn't yet come with a version of NDoc that can handle .NET 2.0 assemblies -->
    <!-- Mono 1.0 does not support extracting xml documentation -->
    <!-- SSCLI 1.0 does not support extracting xml documentation -->
  </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">
    <ndoc>
      <assemblies basedir="${current.bin.dir}">
        <include name="log4net.dll" />
      </assemblies>
      <documenters>
        <documenter name="MSDN">
          <property name="OutputDirectory" value="${current.sdkdoc.dir}" />
          <property name="HtmlHelpName" value="log4net-sdk-${framework::get-target-framework()}" />
          <!--property name="HtmlHelpCompilerFilename" value="${htmlhelp.compiler}" /-->
          <property name="IncludeFavorites" value="true" />
          <property name="IncludeHierarchy" value="true" />
          <property name="Title" value="Apache log4net&#x2122; SDK Documentation - ${framework::get-description(framework::get-target-framework())}" />
          <property name="SplitTOCs" value="false" />
          <property name="DefaulTOC" value="" />
          <property name="ShowVisualBasic" value="true" />
          <property name="OmitObjectTags" value="false" />
          <property name="RootPageContainsNamespaces" value="false" />
          <property name="SortTOCByNamespace" value="true" />
          <property name="ShowMissingSummaries" value="${current.sdkdoc.debug}" />
          <property name="ShowMissingRemarks" value="${current.sdkdoc.debug}" />
          <property name="ShowMissingParams" value="${current.sdkdoc.debug}" />
          <property name="ShowMissingReturns" value="${current.sdkdoc.debug}" />
          <property name="ShowMissingValues" value="${current.sdkdoc.debug}" />
          <property name="DocumentAttributes" value="false" />
          <property name="DocumentedAttributes" value="" />
          <property name="DocumentInternals" value="false" />
          <property name="DocumentPrivates" value="false" />
          <property name="DocumentProtected" value="true" />
          <property name="DocumentEmptyNamespaces" value="false" />
          <property name="SkipNamespacesWithoutSummaries" value="false" />
          <property name="AutoPropertyBackerSummaries" value="false" />
          <property name="AutoDocumentConstructors" value="true" />
          <property name="GetExternalSummaries" value="true" />
          <property name="IncludeAssemblyVersion" value="false" />
          <property name="FooterHtml" value="&lt;a href='http://logging.apache.org/log4net/'&gt;Copyright 2004-2011 The Apache Software Foundation.&lt;/a&gt;&lt;br&gt;&lt;/br&gt;Apache log4net, Apache and log4net are trademarks of The Apache Software Foundation."/>
        </documenter>
      </documenters>
    </ndoc>
  </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.bat"/>
    </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" />
  </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.snk"/>
        <include name="log4net.snk.readme"/>
        <include name="old-log4net.snk.gpg"/>
        <include name="pom.xml"/>

        <include name="examples/**" />
        <include name="extensions/**" />
        <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="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="generate-assembly-description">
    <if test="${not(property::exists('source.svn.revision'))}">
      <property name="source.svn.revision" value="0"/>
      <property name="source.svn.url" value=""/>
      <property name="assembly.description"
                value="The Apache Software Foundation log4net Logging Framework"/>
      <if test="${directory::exists('.svn')}">
        <exec program="svn" workingdir="." verbose="false"
              output="_svnrevision.xml" failonerror="true" >
          <arg value="info" />
          <arg line="--xml" />
        </exec>
        <sleep milliseconds="500" />
        <xmlpeek file="_svnrevision.xml"
                 xpath="/info/entry/@revision"
                 property="source.svn.revision"
                 failonerror="true"/>
        <xmlpeek file="_svnrevision.xml"
                 xpath="/info/entry/url"
                 property="source.svn.url"
                 failonerror="true"/>
        <delete file="_svnrevision.xml"/>
        <property name="assembly.description"
                  value="The Apache Software Foundation log4net Logging Framework built from svn revision ${source.svn.revision} of ${source.svn.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>
</project>
