<?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 -->
    <call target="compile-netstandard"/>
  </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')}">
      <!-- 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-2.0-runtime-configuration"/>
        <call target="check-log4net-basedir"/>
        <call target="clean-current-bin-dir"/>
        <!-- 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.0.4)-->
  <target name="compile-netstandard" description="Builds .NET Core">
    <call target="set-debug-build-configuration"/>
    <call target="compile-netstandard-current-configuration"/>
    <call target="set-release-build-configuration"/>
    <call target="compile-netstandard-current-configuration"/>
  </target>
  <target name="compile-netstandard-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">
        <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">
        <arg value="build"/>
        <arg value="log4net"/>
        <arg if="${current.build.config.release}" value="-c"/>
        <arg if="${current.build.config.release}" value="Release"/>
      </exec>
      <mkdir dir="${log4net.basedir}/bin/netstandard/1.3"/>
      <if test="${current.build.config.release}">
        <move todir="${log4net.basedir}/bin/netstandard/1.3/release">
          <fileset basedir="netstandard/log4net/bin/Release/netstandard1.3"/>
        </move>
      </if>
      <ifnot test="${current.build.config.release}">
        <move todir="${log4net.basedir}/bin/netstandard/1.3/debug">
          <fileset basedir="netstandard/log4net/bin/Debug/netstandard1.3"/>
        </move>
      </ifnot>
    </if>
  </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>
