<?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"/>
  <!-- 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."/>
    <!-- NETCF_1_0 -->
    <call target="compile-netcf-1.0"/>
    <!-- NETCF_2_0 -->
    <call target="compile-netcf-2.0"/>
    <!-- NET_1_0 -->
    <call target="compile-net-1.0"/>
    <call target="compile-cli-1.0"/>
    <!-- NET_1_1 -->
    <call target="compile-net-1.1"/>
    <!-- NET_2_0 -->
    <call target="compile-net-2.0"/>
    <!-- NET_3_5 -->
    <call target="compile-net-3.5"/>
    <call target="compile-net-3.5-cp"/>
    <!-- NET_4_0 -->
    <call target="compile-net-4.0"/>
    <call target="compile-net-4.0-cp"/>
    <call target="compile-net-4.5"/>
    <!-- MONO_1_0 -->
    <call target="compile-mono-1.0"/>
    <!-- MONO_2_0 -->
    <call target="compile-mono-2.0"/>
    <!-- MONO_3_5 -->
    <call target="compile-mono-3.5"/>
    <!-- MONO_4_0 -->
    <call target="compile-mono-4.0"/>
    <!-- SSCLI_1_0 -->
    <call target="compile-sscli-1.0"/>
    <!-- netstandard-1.3 -->
    <call target="compile-netstandard-1.3"/>
  </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="compile-${framework::get-target-framework()}"/>
  </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">
    <call target="set-debug-build-configuration"/>
    <call target="compile-netcf-1.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-netcf-1.0-current-configuration"/>
  </target>
  <target name="compile-netcf-1.0-current-configuration">
    <if test="${not framework::exists('netcf-1.0')}">
      <echo message="Skipping build; required framework is not available: .NET Compact Framework 1.0"/>
    </if>
    <if test="${framework::exists('netcf-1.0')}">
      <call target="set-netcf-1.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-netcf-2.0" description="Builds .NET Compact Framework 2.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-netcf-2.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-netcf-2.0-current-configuration"/>
  </target>
  <target name="compile-netcf-2.0-current-configuration">
    <if test="${not framework::exists('netcf-2.0')}">
      <echo message="Skipping build; required framework is not available: .NET Compact Framework 2.0"/>
    </if>
    <if test="${framework::exists('netcf-2.0')}">
      <call target="set-netcf-2.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-net-1.0" description="Builds .NET Framework 1.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-1.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-1.0-current-configuration"/>
  </target>
  <target name="compile-net-1.0-current-configuration">
    <if test="${not framework::exists('net-1.0')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 1.0"/>
    </if>
    <if test="${framework::exists('net-1.0')}">
      <!-- initialize the temp.build.skip property to false -->
      <property name="temp.build.skip" value="false"/>
      <if test="${current.build.config.release}">
        <call target="set-net-1.0-runtime-configuration"/>
        <call target="check-log4net-basedir"/>
        <call target="clean-current-bin-dir"/>
        <!-- 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>
    </if>
  </target>
  <target name="compile-net-1.1" description="Builds .NET Framework 1.1 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-1.1-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-1.1-current-configuration"/>
  </target>
  <target name="compile-net-1.1-current-configuration">
    <if test="${not framework::exists('net-1.1')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 1.1"/>
    </if>
    <if test="${framework::exists('net-1.1')}">
      <!-- initialize the temp.build.skip property to false -->
      <property name="temp.build.skip" value="false"/>
      <if test="${current.build.config.release}">
        <call target="set-net-1.1-runtime-configuration"/>
        <call target="check-log4net-basedir"/>
        <call target="clean-current-bin-dir"/>
        <!-- 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>
    </if>
  </target>
  <target name="compile-net-2.0" description="Builds .NET Framework 2.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-2.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-2.0-current-configuration"/>
  </target>
  <target name="compile-net-2.0-current-configuration">
    <if test="${not framework::exists('net-2.0')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 2.0"/>
    </if>
    <if test="${framework::exists('net-2.0')}">
      <call target="set-net-2.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-net-3.5" description="Builds .NET Framework 3.5 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-3.5-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-3.5-current-configuration"/>
  </target>
  <target name="compile-net-3.5-current-configuration">
    <if test="${not framework::exists('net-3.5')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 3.5"/>
    </if>
    <if test="${framework::exists('net-3.5')}">
      <call target="set-net-3.5-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-net-3.5-cp" description="Builds .NET Framework 3.5 Client Profile version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-3.5-cp-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-3.5-cp-current-configuration"/>
  </target>
  <target name="compile-net-3.5-cp-current-configuration">
    <if test="${not framework::exists('net-3.5')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 3.5"/>
    </if>
    <if test="${framework::exists('net-3.5')}">
      <call target="set-net-3.5-cp-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-net-4.0" description="Builds .NET Framework 4.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-4.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-4.0-current-configuration"/>
  </target>
  <target name="compile-net-4.0-current-configuration">
    <if test="${not framework::exists('net-4.0')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 4.0"/>
    </if>
    <if test="${framework::exists('net-4.0')}">
      <call target="set-net-4.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-net-4.0-cp" description="Builds .NET Framework 4.0 Client Profile version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-4.0-cp-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-4.0-cp-current-configuration"/>
  </target>
  <target name="compile-net-4.0-cp-current-configuration">
    <if test="${not framework::exists('net-4.0')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 4.0"/>
    </if>
    <if test="${framework::exists('net-4.0')}">
      <call target="set-net-4.0-cp-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-net-4.5" description="Builds .NET Framework 4.5 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-net-4.5-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-net-4.5-current-configuration"/>
  </target>
  <target name="compile-net-4.5-current-configuration">
    <if test="${not framework::exists('net-4.0')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 4.0"/>
    </if>
    <if test="${framework::exists('net-4.0')}">
      <call target="set-net-4.5-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-mono-1.0" description="Builds Mono 1.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-mono-1.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-mono-1.0-current-configuration"/>
  </target>
  <target name="compile-mono-1.0-current-configuration">
    <if test="${not framework::exists('mono-1.0')}">
      <echo message="Skipping build; required framework is not available: Mono 1.0"/>
    </if>
    <if test="${framework::exists('mono-1.0')}">
      <call target="set-mono-1.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-mono-2.0" description="Builds Mono 2.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-mono-2.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-mono-2.0-current-configuration"/>
  </target>
  <target name="compile-mono-2.0-current-configuration">
    <if test="${not framework::exists('mono-2.0')}">
      <echo message="Skipping build; required framework is not available: Mono 2.0"/>
    </if>
    <if test="${framework::exists('mono-2.0')}">
      <call target="set-mono-2.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-mono-3.5" description="Builds Mono 3.5 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-mono-3.5-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-mono-3.5-current-configuration"/>
  </target>
  <target name="compile-mono-3.5-current-configuration">
    <if test="${not framework::exists('mono-3.5')}">
      <echo message="Skipping build; required framework is not available: Mono 3.5"/>
    </if>
    <if test="${framework::exists('mono-3.5')}">
      <call target="set-mono-3.5-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-mono-4.0" description="Builds Mono 4.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-mono-4.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-mono-4.0-current-configuration"/>
  </target>
  <target name="compile-mono-4.0-current-configuration">
    <if test="${not framework::exists('mono-4.0')}">
      <echo message="Skipping build; required framework is not available: Mono 4.0"/>
    </if>
    <if test="${framework::exists('mono-4.0')}">
      <call target="set-mono-4.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </if>
  </target>
  <target name="compile-sscli-1.0" description="Builds SSCLI 1.0 version">
    <call target="set-debug-build-configuration"/>
    <call target="compile-sscli-1.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-sscli-1.0-current-configuration"/>
  </target>
  <target name="compile-sscli-1.0-current-configuration">
    <if test="${not framework::exists('sscli-1.0')}">
      <echo message="Skipping build; required framework is not available: SSCLI 1.0"/>
    </if>
    <if test="${framework::exists('sscli-1.0')}">
      <call target="set-sscli-1.0-runtime-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="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>
    </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" if="${current.build.config.release}">
    <call target="set-debug-build-configuration"/>
    <call target="compile-cli-1.0-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-cli-1.0-current-configuration"/>
  </target>
  <target name="compile-cli-1.0-current-configuration">
    <if test="${not framework::exists('net-1.0')}">
      <echo message="Skipping build; required framework is not available: .NET Framework 1.0"/>
    </if>
    <if test="${framework::exists('net-1.0')}">
      <call target="set-cli-1.0-configuration"/>
      <call target="check-log4net-basedir"/>
      <call target="clean-current-bin-dir"/>
      <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>
    </if>
  </target>
  <!-- these targets build lognet assemblies against .NET Core (.net standard 1.3)-->
  <target name="compile-netstandard-1.3" description="Builds .NET Core">
    <call target="set-debug-build-configuration"/>
    <call target="compile-netstandard-1.3-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-netstandard-1.3-current-configuration"/>
  </target>
  <target name="compile-netstandard-1.3-current-configuration">
    <echo message="dotnet --version"/>
    <exec program="dotnet" workingdir="netstandard" failonerror="false" resultproperty="dotnet.available">
      <arg value="--version"/>
    </exec>
    <if test="${dotnet.available != '0'}">
      <echo message="Skipping build; required framework is not available: netstandard"/>
    </if>
    <if test="${dotnet.available == '0'}">
      <echo message="dotnet restore log4net.netstandard.sln"/>
	  <exec program="dotnet" workingdir="netstandard/1.3">
        <arg value="restore"/>
        <arg value="log4net.netstandard.sln"/>
      </exec>
      <if test="${current.build.config.release != '-c'}">
        <echo message="dotnet build log4net"/>
      </if>
      <if test="${current.build.config.release == '-c'}">
        <echo message="dotnet build log4net -c Release"/>
      </if>
	  <exec program="dotnet" workingdir="netstandard/1.3">
        <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/1.3/log4net/bin/Release/netstandard1.3"/>
        </move>
      </if>
      <if test="${current.build.config.debug}">
        <move todir="${log4net.basedir}/bin/netstandard/1.3/debug">
          <fileset basedir="netstandard/1.3/log4net/bin/Debug/netstandard1.3"/>
        </move>
      </if>
    </if>
  </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="check-package-binaries">
    <!-- check if required net and net-cp binaries are available -->
    <foreach item="String" in="net,net-cp" delim="," property="framework">
      <foreach item="String" in="3.5,4.0" delim="," property="frameworkversion">
        <foreach item="String" in="debug,release,oldkey" delim="," property="configuration">
          <property name="item" value="${framework}/${frameworkversion}/${configuration}"/>
          <if test="${not(directory::exists(path::combine(bin.dir, '${item}')))}">
            <fail message="Missing binaries: ${item}"/>
          </if>
        </foreach>
      </foreach>
    </foreach>
    <!-- check if required mono binaries are available -->
    <foreach item="String" in="mono" delim="," property="framework">
      <foreach item="String" in="2.0,3.5,4.0" delim="," property="frameworkversion">
        <foreach item="String" in="debug,release,oldkey" delim="," property="configuration">
          <property name="item" value="${framework}/${frameworkversion}/${configuration}"/>
          <if test="${not(directory::exists(path::combine(bin.dir, '${item}')))}">
            <fail message="Missing binaries: ${item}"/>
          </if>
        </foreach>
      </foreach>
    </foreach>
    <!-- check if required netstandard binaries are available -->
    <foreach item="String" in="netstandard" delim="," property="framework">
      <foreach item="String" in="1.3" delim="," property="frameworkversion">
        <foreach item="String" in="debug,release" delim="," property="configuration">
          <property name="item" value="${framework}/${frameworkversion}/${configuration}"/>
          <if test="${not(directory::exists(path::combine(bin.dir, '${item}')))}">
            <fail message="Missing binaries: ${item}"/>
          </if>
        </foreach>
      </foreach>
    </foreach>
  </target>
  <target name="package-bin" depends="check-package-binaries,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>
</project>
