Merge branch 'develop' into feature/RollingFileAppender-NG
diff --git a/.gitignore b/.gitignore
index 6c925f2..b9a8678 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@
 [Dd]ebug/
 [Dd]ebugPublic/
 [Rr]elease/
+!src/site/xdoc/release/
 [Rr]eleases/
 x64/
 x86/
@@ -137,7 +138,7 @@
 # Publish Web Output
 *.[Pp]ublish.xml
 *.azurePubxml
-# TODO: Comment the next line if you want to checkin your web deploy settings 
+# TODO: Comment the next line if you want to checkin your web deploy settings
 # but database connection strings (with potential passwords) will be unencrypted
 *.pubxml
 *.publishproj
@@ -235,4 +236,3 @@
 # other files to ignore
 old-log4net.snk
 src/GeneratedAssemblyInfo.cs
-
diff --git a/Jenkinsfile b/Jenkinsfile
index 43215b5..9d53023 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -19,13 +19,13 @@
 
 pipeline {
 	options {
-		timeout(time: 1, unit: 'HOURS')
+		timeout(time: 4, unit: 'HOURS')
 		buildDiscarder(logRotator(numToKeepStr: '3'))
 		skipDefaultCheckout()
 		disableConcurrentBuilds()
 	}
 	agent {
-		label 'ubuntu'
+		label 'ubuntu&&!H26'
 	}
 	stages {
 		// prepare node for builds
@@ -37,11 +37,11 @@
 		}
 
 		// builds
-		stage('build netstandard') {
+		stage('build netstandard-1.3') {
 			steps {
 				script {
 					checkout scm
-					def builder_dir = "buildtools/docker/builder-netstandard"
+					def builder_dir = "buildtools/docker/builder-netstandard-1.3"
 
 					// calculate args required to build the docker container
 					def JENKINS_UID = sh (
@@ -52,34 +52,40 @@
 						script: "stat -c \"%g\" $builder_dir",
 						returnStdout: true
 					).trim()
-					echo "$JENKINS_UID"
-					echo "$JENKINS_GID"
 
 					// build docker container
-					def builder = docker.build 'builder-netstandard:latest', "--file $builder_dir/Dockerfile --build-arg JENKINS_UID=$JENKINS_UID --build-arg JENKINS_GID=$JENKINS_GID $builder_dir"
+					def builder = docker.build 'builder-netstandard-1.3:latest', "--file $builder_dir/Dockerfile --build-arg JENKINS_UID=$JENKINS_UID --build-arg JENKINS_GID=$JENKINS_GID $builder_dir"
 
 					// run docker container
 					builder.inside {
 						// compile
-						sh "nant compile-netstandard"
-						stash includes: 'bin/**/*.*', name: 'netstandard-assemblies'
+						sh "nant compile-netstandard-1.3"
+						stash includes: 'bin/**/*.*', name: 'netstandard-1.3-assemblies'
 
 						// test
-						sh 'cd netstandard/log4net.tests && dotnet test'
+						sh "nant -buildfile:tests/nant.build runtests-netstandard-1.3"
+						stash includes: 'tests/bin/**/*.trx', name: 'netstandard-1.3-testresults', allowEmpty: true
+						stash includes: 'tests/bin/**/*.log', name: 'netstandard-1.3-testlogs', allowEmpty: true
 					}
 				}
-
-
-				// compile 
-				// sh 'nant compile-netstandard'
-				// stash includes: 'bin/**/*.*', name: 'netstandard-assemblies'
-
-				// test
-				// sh 'cd netstandard/log4net.tests && dotnet test'
+			}
+		}
+		stage('build net-2.0') {
+			agent { label 'windows-2012-1||windows-2012-2||windows-2012-3' }
+			environment {
+				NANT_BIN = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
+			}
+			steps {
+				deleteDir()
+				checkout scm
+				bat "${NANT_BIN} -t:net-2.0 -buildfile:log4net.build compile-net-2.0"
+				stash includes: 'bin/**/*.*', name: 'net-2.0-assemblies'
+				bat "${NANT_BIN} -t:net-2.0 -buildfile:tests/nant.build runtests-net-2.0"
+				stash includes: 'tests/bin/**/*.nunit.xml', name: 'net-2.0-testresults'
 			}
 		}
 		stage('build net-3.5') {
-			agent { label 'Windows' }
+			agent { label 'windows-2012-1||windows-2012-2||windows-2012-3' }
 			environment {
 				NANT_BIN = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
 			}
@@ -93,7 +99,7 @@
 			}
 		}
 		stage('build net-3.5-cp') {
-			agent { label 'Windows' }
+			agent { label 'windows-2012-1||windows-2012-2||windows-2012-3' }
 			environment {
 				NANT_BIN = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
 			}
@@ -107,7 +113,7 @@
 			}
 		}
 		stage('build net-4.0') {
-			agent { label 'Windows' }
+			agent { label 'windows-2012-1||windows-2012-2||windows-2012-3' }
 			environment {
 				NANT_BIN = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
 			}
@@ -121,7 +127,7 @@
 			}
 		}
 		stage('build net-4.0-cp') {
-			agent { label 'Windows' }
+			agent { label 'windows-2012-1||windows-2012-2||windows-2012-3' }
 			environment {
 				NANT_BIN = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
 			}
@@ -135,7 +141,7 @@
 			}
 		}
 		stage('build net-4.5') {
-			agent { label 'Windows' }
+			agent { label 'windows-2012-1||windows-2012-2||windows-2012-3' }
 			environment {
 				NANT_BIN = 'F:\\jenkins\\tools\\nant\\nant-0.92\\bin\\NAnt.exe'
 			}
@@ -200,7 +206,7 @@
 			}
 		}
 		stage('build site') {
-			agent { label 'Windows' }
+			agent { label 'windows-2012-1||windows-2012-2||windows-2012-3' }
 			tools {
 				maven 'Maven 3.3.9 (Windows)'
 				jdk 'JDK 1.8 (latest)'
@@ -230,7 +236,7 @@
 					unstash 'mono-2.0-assemblies'
 					unstash 'mono-3.5-assemblies'
 					unstash 'mono-4.0-assemblies'
-					unstash 'netstandard-assemblies'
+					unstash 'netstandard-1.3-assemblies'
 
 					// unstash test results
 					unstash 'net-3.5-testresults'
@@ -241,11 +247,13 @@
 					unstash 'mono-2.0-testresults'
 					unstash 'mono-3.5-testresults'
 					unstash 'mono-4.0-testresults'
+					unstash 'netstandard-1.3-testresults'
+					unstash 'netstandard-1.3-testlogs'
 
 					// unstash site
 					unstash 'site'
 				}
-				
+
 				// move site
 				sh 'mv package/target/site/ package/site/'
 				sh 'rmdir -p --ignore-fail-on-non-empty package/target'
@@ -277,6 +285,14 @@
 							pattern              : 'package/tests/bin/**/*.nunit.xml',
 							skipNoTestFiles      : true,
 							stopProcessingIfError: true
+						],
+						[
+							$class               : 'MSTestJunitHudsonTestType',
+							deleteOutputFiles    : false,
+							failIfNotNew         : true,
+							pattern              : 'package/**/*.trx',
+							skipNoTestFiles      : true,
+							stopProcessingIfError: true
 						]
 					]
 				])
@@ -295,8 +311,7 @@
 	post {
 		failure {
 			// TODO: change this to dev@
-			step([$class: 'Mailer', notifyEveryUnstableBuild: false, recipients: 'commits@logging.apache.org'])
+			step([$class: 'Mailer', notifyEveryUnstableBuild: false, recipients: 'notifications@logging.apache.org'])
 		}
 	}
 }
-
diff --git a/NOTICE b/NOTICE
index 86d4dfe..d6ed9b6 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
    Apache log4net
-   Copyright 2004-2017 The Apache Software Foundation
+   Copyright 2004-2018 The Apache Software Foundation
 
    This product includes software developed at
    The Apache Software Foundation (http://www.apache.org/).
diff --git a/buildtools/docker/build-builder-netstandard.sh b/buildtools/docker/build-builder-netstandard-1.3.sh
similarity index 94%
rename from buildtools/docker/build-builder-netstandard.sh
rename to buildtools/docker/build-builder-netstandard-1.3.sh
index e3871c5..f1fc772 100755
--- a/buildtools/docker/build-builder-netstandard.sh
+++ b/buildtools/docker/build-builder-netstandard-1.3.sh
@@ -8,7 +8,7 @@
   exit 1  # fail
 fi
 
-NAME="builder-netstandard"
+NAME="builder-netstandard-1.3"
 JENKINS_UID=$2
 if [ -z "$JENKINS_UID" ] ; then
   JENKINS_UID="`stat -c \"%u\" $0`"
diff --git a/buildtools/docker/builder-mono-2.0/Dockerfile b/buildtools/docker/builder-mono-2.0/Dockerfile
index 016d55b..39014e2 100644
--- a/buildtools/docker/builder-mono-2.0/Dockerfile
+++ b/buildtools/docker/builder-mono-2.0/Dockerfile
@@ -1,9 +1,13 @@
-# Name of container: docker-ubuntu-latest-nant
-FROM ubuntu:latest
+# Name of container
+FROM ubuntu:16.04
 
 # set the maintainer of this docker image
 MAINTAINER "dev@logging.apache.org"
 
+# set the timezone
+RUN ln -fs /usr/share/zoneinfo/Universal /etc/localtime
+RUN echo "Universal" > /etc/timezone
+
 # install dependencies
 RUN apt-get update && apt-get install -y nant git mono-complete mono-reference-assemblies-2.0
 
diff --git a/buildtools/docker/builder-mono-3.5/Dockerfile b/buildtools/docker/builder-mono-3.5/Dockerfile
index 709f0fd..adecc33 100644
--- a/buildtools/docker/builder-mono-3.5/Dockerfile
+++ b/buildtools/docker/builder-mono-3.5/Dockerfile
@@ -1,9 +1,13 @@
 # Name of container: docker-ubuntu-latest-nant
-FROM ubuntu:latest
+FROM ubuntu:16.04
 
 # set the maintainer of this docker image
 MAINTAINER "dev@logging.apache.org"
 
+# set the timezone
+RUN ln -fs /usr/share/zoneinfo/Universal /etc/localtime
+RUN echo "Universal" > /etc/timezone
+
 # install nant
 RUN apt-get update && apt-get install -y nant git mono-complete mono-reference-assemblies-2.0 mono-reference-assemblies-3.5
 
diff --git a/buildtools/docker/builder-mono-4.0/Dockerfile b/buildtools/docker/builder-mono-4.0/Dockerfile
index 28bd0e0..8de952c 100644
--- a/buildtools/docker/builder-mono-4.0/Dockerfile
+++ b/buildtools/docker/builder-mono-4.0/Dockerfile
@@ -1,9 +1,13 @@
 # Name of container: docker-ubuntu-latest-nant
-FROM ubuntu:latest
+FROM ubuntu:16.04
 
 # set the maintainer of this docker image
 MAINTAINER "dev@logging.apache.org"
 
+# set the timezone
+RUN ln -fs /usr/share/zoneinfo/Universal /etc/localtime
+RUN echo "Universal" > /etc/timezone
+
 # install nant
 RUN apt-get update && apt-get install -y nant git mono-complete mono-reference-assemblies-4.0
 
diff --git a/buildtools/docker/builder-netstandard/Dockerfile b/buildtools/docker/builder-netstandard-1.3/Dockerfile
similarity index 83%
rename from buildtools/docker/builder-netstandard/Dockerfile
rename to buildtools/docker/builder-netstandard-1.3/Dockerfile
index 2dc5f54..6e43e81 100644
--- a/buildtools/docker/builder-netstandard/Dockerfile
+++ b/buildtools/docker/builder-netstandard-1.3/Dockerfile
@@ -1,5 +1,4 @@
-# Name of container: docker-ubuntu-latest-nant
-FROM microsoft/dotnet
+FROM microsoft/dotnet:2-sdk-jessie
 
 # define arguments passed in as environment variables
 ARG JENKINS_UID
@@ -8,9 +7,6 @@
 # set the maintainer of this docker image
 MAINTAINER "dev@logging.apache.org"
 
-RUN echo $JENKINS_UID
-RUN echo $JENKINS_GID
-
 # add custom workspace that can be written by anyone
 RUN mkdir -p /var/workspaces && chmod 0777 /var/workspaces
 
@@ -20,4 +16,3 @@
 
 # install dependencies
 RUN apt-get update && apt-get install -y nant git
-
diff --git a/buildtools/docker/run-builder-netstandard.sh b/buildtools/docker/run-builder-netstandard-1.3.sh
similarity index 87%
rename from buildtools/docker/run-builder-netstandard.sh
rename to buildtools/docker/run-builder-netstandard-1.3.sh
index e3d2794..f97f54b 100755
--- a/buildtools/docker/run-builder-netstandard.sh
+++ b/buildtools/docker/run-builder-netstandard-1.3.sh
@@ -14,5 +14,5 @@
 	WORKING_DIR=$(pwd)
 fi
 
-$MY_PATH/run.sh "builder-netstandard" $WORKING_DIR
+$MY_PATH/run.sh "builder-netstandard-1.3" $WORKING_DIR
 
diff --git a/log4net.build b/log4net.build
index 6961d8b..c94d344 100644
--- a/log4net.build
+++ b/log4net.build
@@ -1,10 +1,10 @@
 <?xml version="1.0"?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more 
+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. 
+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 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
@@ -201,8 +201,8 @@
     <call target="compile-mono-4.0"/>
     <!-- SSCLI_1_0 -->
     <call target="compile-sscli-1.0"/>
-    <!-- netstandard -->
-    <call target="compile-netstandard"/>
+    <!-- netstandard-1.3 -->
+    <call target="compile-netstandard-1.3"/>
   </target>
   <!-- Target for compiling all build configurations for the current runtime configurations -->
   <target name="compile-runtime" description="Compile all build configurations for the current target framework">
@@ -544,12 +544,12 @@
       <echo message="Skipping build; required framework is not available: .NET Framework 2.0"/>
     </if>
     <if test="${framework::exists('net-2.0')}">
+      <call target="set-net-2.0-runtime-configuration"/>
+      <call target="check-log4net-basedir"/>
+      <call target="clean-current-bin-dir"/>
       <!-- initialize the temp.build.skip property to false -->
       <property name="temp.build.skip" value="false"/>
       <if test="${current.build.config.release}">
-        <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}">
@@ -1748,14 +1748,14 @@
       </csc>
     </if>
   </target>
-  <!-- these targets build lognet assemblies against .NET Core (.net standard 1.0.4)-->
-  <target name="compile-netstandard" description="Builds .NET Core">
+  <!-- these targets build lognet assemblies against .NET Core (.net standard 1.3)-->
+  <target name="compile-netstandard-1.3" description="Builds .NET Core">
     <call target="set-debug-build-configuration"/>
-    <call target="compile-netstandard-current-configuration"/>
+    <call target="compile-netstandard-1.3-current-configuration"/>
     <call target="set-release-build-configuration"/>
-    <call target="compile-netstandard-current-configuration"/>
+    <call target="compile-netstandard-1.3-current-configuration"/>
   </target>
-  <target name="compile-netstandard-current-configuration">
+  <target name="compile-netstandard-1.3-current-configuration">
     <echo message="dotnet --version"/>
     <exec program="dotnet" workingdir="netstandard" failonerror="false" resultproperty="dotnet.available">
       <arg value="--version"/>
@@ -1765,7 +1765,7 @@
     </if>
     <if test="${dotnet.available == '0'}">
       <echo message="dotnet restore log4net.netstandard.sln"/>
-      <exec program="dotnet" workingdir="netstandard">
+	  <exec program="dotnet" workingdir="netstandard/1.3">
         <arg value="restore"/>
         <arg value="log4net.netstandard.sln"/>
       </exec>
@@ -1775,7 +1775,7 @@
       <if test="${current.build.config.release == '-c'}">
         <echo message="dotnet build log4net -c Release"/>
       </if>
-      <exec program="dotnet" workingdir="netstandard">
+	  <exec program="dotnet" workingdir="netstandard/1.3">
         <arg value="build"/>
         <arg value="log4net"/>
         <arg if="${current.build.config.release}" value="-c"/>
@@ -1784,14 +1784,14 @@
       <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"/>
+          <fileset basedir="netstandard/1.3/log4net/bin/Release/netstandard1.3"/>
         </move>
       </if>
-      <ifnot test="${current.build.config.release}">
+      <if test="${current.build.config.debug}">
         <move todir="${log4net.basedir}/bin/netstandard/1.3/debug">
-          <fileset basedir="netstandard/log4net/bin/Debug/netstandard1.3"/>
+          <fileset basedir="netstandard/1.3/log4net/bin/Debug/netstandard1.3"/>
         </move>
-      </ifnot>
+      </if>
     </if>
   </target>
   <!-- Target for generating docs for all runtime configurations -->
diff --git a/log4net.include b/log4net.include
index 7cfe8e1..6597dd4 100644
--- a/log4net.include
+++ b/log4net.include
@@ -132,7 +132,7 @@
         </if>
     </target>
     <target name="check-log4net-assembly" depends="check-current-build-config, check-log4net-output-dir">
-	<echo message="Testing if file exists: ${path::combine(log4net.output.dir, 'log4net.dll')} "/>
+    <echo message="Testing if file exists: ${path::combine(log4net.output.dir, 'log4net.dll')} "/>
         <if test="${not file::exists(path::combine(log4net.output.dir, 'log4net.dll'))}">
             <fail message="The log4net '${current.build.config}' assembly for ${framework::get-description(framework::get-target-framework())} is not available." />
         </if>
@@ -235,83 +235,83 @@
     </target>
     <!-- uses NET_2_0 defines plus NET_3_5 -->
     <target name="set-net-3.5-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
-      <property name="nant.settings.currentframework" value="net-3.5" />
-      <property name="current.build.debug" value="${build.debug}" dynamic="true" />
-      <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
-      <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_3_5" dynamic="true" />
-      <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_3_5" dynamic="true" />
-      <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_3_5=True" dynamic="true" />
-      <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_3_5" dynamic="true" />
-      <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_3_5" dynamic="true" />
-      <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
+        <property name="nant.settings.currentframework" value="net-3.5" />
+        <property name="current.build.debug" value="${build.debug}" dynamic="true" />
+        <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
+        <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_3_5" dynamic="true" />
+        <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_3_5" dynamic="true" />
+        <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_3_5=True" dynamic="true" />
+        <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_3_5" dynamic="true" />
+        <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_3_5" dynamic="true" />
+        <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
-      <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />      
-      <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />      
+        <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
     <!-- uses NET_2_0 defines plus NET_3_5 and CLIENT_PROFILE-->
     <target name="set-net-3.5-cp-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
-      <property name="nant.settings.currentframework" value="net-3.5" />
-      <property name="current.build.debug" value="${build.debug}" dynamic="true" />
-      <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
-      <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_3_5,CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_3_5,CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_3_5=True,CLIENT_PROFILE=True" dynamic="true" />
-      <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_3_5,CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_3_5 /D CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
+        <property name="nant.settings.currentframework" value="net-3.5" />
+        <property name="current.build.debug" value="${build.debug}" dynamic="true" />
+        <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
+        <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_3_5,CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_3_5,CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_3_5=True,CLIENT_PROFILE=True" dynamic="true" />
+        <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_3_5,CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_3_5 /D CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
-      <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}" />      
-      <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}" />      
+        <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
     <!-- uses NET_2_0 plus NET_4_0 defines -->
     <target name="set-net-4.0-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
-      <property name="nant.settings.currentframework" value="net-4.0" />
-      <property name="current.build.debug" value="${build.debug}" dynamic="true" />
-      <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
-      <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_4_0" dynamic="true" />
-      <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_4_0" dynamic="true" />
-      <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_4_0=True" dynamic="true" />
-      <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_4_0" dynamic="true" />
-      <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_4_0" dynamic="true" />
-      <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
+        <property name="nant.settings.currentframework" value="net-4.0" />
+        <property name="current.build.debug" value="${build.debug}" dynamic="true" />
+        <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
+        <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_4_0" dynamic="true" />
+        <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_4_0" dynamic="true" />
+        <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_4_0=True" dynamic="true" />
+        <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_4_0" dynamic="true" />
+        <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_4_0" dynamic="true" />
+        <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
-      <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />      
-      <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />      
+        <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
     <!-- uses NET_2_0 plus NET_4_0 and CLIENT_PROFILE defines -->
     <target name="set-net-4.0-cp-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
-      <property name="nant.settings.currentframework" value="net-4.0" />
-      <property name="current.build.debug" value="${build.debug}" dynamic="true" />
-      <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
-      <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_4_0,CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_4_0,CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_4_0=True,CLIENT_PROFILE=True" dynamic="true" />
-      <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_4_0,CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_4_0 /D CLIENT_PROFILE" dynamic="true" />
-      <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
+        <property name="nant.settings.currentframework" value="net-4.0" />
+        <property name="current.build.debug" value="${build.debug}" dynamic="true" />
+        <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
+        <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_4_0,CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_4_0,CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_4_0=True,CLIENT_PROFILE=True" dynamic="true" />
+        <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_4_0,CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_4_0 /D CLIENT_PROFILE" dynamic="true" />
+        <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
-      <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}" />      
-      <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}-cp/${framework::get-version(framework::get-target-framework())}" />      
+        <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
     <!-- uses NET_4_0 plus NET_4_5 defines -->
     <target name="set-net-4.5-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
-      <property name="nant.settings.currentframework" value="net-4.0" />
-      <property name="current.build.debug" value="${build.debug}" dynamic="true" />
-      <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
-      <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_4_0,NET_4_5" dynamic="true" />
-      <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_4_0,NET_4_5" dynamic="true" />
-      <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_4_0=True,NET_4_5=True" dynamic="true" />
-      <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_4_0,NET_4_5" dynamic="true" />
-      <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_4_0 /D NET_4_5" dynamic="true" />
-      <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/4.5/${current.build.config}" />
+        <property name="nant.settings.currentframework" value="net-4.0" />
+        <property name="current.build.debug" value="${build.debug}" dynamic="true" />
+        <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
+        <property name="current.build.defines.csc" value="${build.defines.csc},NET,NET_2_0,NET_4_0,NET_4_5" dynamic="true" />
+        <property name="current.build.defines.jsc" value="${build.defines.jsc},NET,NET_2_0,NET_4_0,NET_4_5" dynamic="true" />
+        <property name="current.build.defines.vbc" value="${build.defines.vbc},NET=True,NET_2_0=True,NET_4_0=True,NET_4_5=True" dynamic="true" />
+        <property name="current.build.defines.vjc" value="${build.defines.vjc},NET,NET_2_0,NET_4_0,NET_4_5" dynamic="true" />
+        <property name="current.build.defines.cl" value="${build.defines.cl} /D NET /D NET_2_0 /D NET_4_0 /D NET_4_5" dynamic="true" />
+        <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/4.5/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
-      <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/4.5" />      
-      <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/4.5" />      
+        <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
     <target name="set-netcf-1.0-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
         <property name="nant.settings.currentframework" value="netcf-1.0" />
@@ -324,11 +324,11 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D NETCF /D NETCF_1_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
-	<target name="set-netcf-2.0-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
+    <target name="set-netcf-2.0-runtime-configuration" depends="check-bin-dir, check-sdkdoc-dir, check-sdkdoc-debug, check-current-build-config, check-build-debug, check-build-defines">
         <property name="nant.settings.currentframework" value="netcf-2.0" />
         <property name="current.build.debug" value="${build.debug}" dynamic="true" />
         <property name="current.build.optimize" value="${build.optimize}" dynamic="true" />
@@ -339,7 +339,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D NETCF /D NETCF_2_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
@@ -354,7 +354,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D MONO /D MONO_1_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
@@ -369,7 +369,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D MONO /D MONO_2_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
@@ -384,7 +384,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D MONO /D MONO_2_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
@@ -399,7 +399,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D MONO /D MONO_2_0 /D MONO_4_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
@@ -414,7 +414,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D MONO /D MONO_2_0 /D MONO_4_0 /D MONO_4_5" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
@@ -429,7 +429,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D SSCLI /D SSCLI_1_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}/${framework::get-family(framework::get-target-framework())}/${framework::get-version(framework::get-target-framework())}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
@@ -444,7 +444,7 @@
         <property name="current.build.defines.cl" value="${build.defines.cl} /D CLI /D CLI_1_0" dynamic="true" />
         <property name="current.build.configuration.dir" value="cli/1.0/${current.build.config}" />
         <property name="current.bin.dir" value="${bin.dir}/${current.build.configuration.dir}"/>
-      <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
+        <property name="log4net.output.dir" value="${log4net.basedir}/${current.bin.dir}" />
         <property name="current.sdkdoc.dir" value="${sdkdoc.dir}" />
         <property name="current.sdkdoc.debug" value="${sdkdoc.debug}" dynamic="true" />
     </target>
diff --git a/log4net.nuspec b/log4net.nuspec
index ea0a9f0..19bbc64 100644
--- a/log4net.nuspec
+++ b/log4net.nuspec
@@ -25,9 +25,9 @@
     <version>2.0.9</version>
     <title>Apache log4net</title>
     <summary>The Apache log4net library is a tool to help the programmer output log statements to a variety of output targets.</summary>
-    <description>log4net is a tool to help the programmer output log statements to a variety of output targets. In case of problems with an application, it is helpful to enable logging so that the problem can be located. With log4net it is possible to enable logging at runtime without modifying the application binary. The log4net package is designed so that log statements can remain in shipped code without incurring a high performance cost. It follows that the speed of logging (or rather not logging) is crucial. 
+    <description>log4net is a tool to help the programmer output log statements to a variety of output targets. In case of problems with an application, it is helpful to enable logging so that the problem can be located. With log4net it is possible to enable logging at runtime without modifying the application binary. The log4net package is designed so that log statements can remain in shipped code without incurring a high performance cost. It follows that the speed of logging (or rather not logging) is crucial.
 
-At the same time, log output can be so voluminous that it quickly becomes overwhelming. One of the distinctive features of log4net is the notion of hierarchical loggers. Using these loggers it is possible to selectively control which log statements are output at arbitrary granularity. 
+At the same time, log output can be so voluminous that it quickly becomes overwhelming. One of the distinctive features of log4net is the notion of hierarchical loggers. Using these loggers it is possible to selectively control which log statements are output at arbitrary granularity.
 
 log4net is designed with two distinct goals in mind: speed and flexibility</description>
     <authors>The Apache Software Foundation</authors>
@@ -35,7 +35,7 @@
     <licenseUrl>http://logging.apache.org/log4net/license.html</licenseUrl>
     <projectUrl>http://logging.apache.org/log4net/</projectUrl>
     <iconUrl>https://www.apache.org/images/feather.png</iconUrl>
-    <copyright>Copyright 2004-2017 The Apache Software Foundation</copyright>
+    <copyright>Copyright 2004-2018 The Apache Software Foundation</copyright>
     <requireLicenseAcceptance>false</requireLicenseAcceptance>
     <tags>logging log tracing logfiles</tags>
     <dependencies>
diff --git a/log4net.shfbproj b/log4net.shfbproj
index 7f91938..393a7b3 100644
--- a/log4net.shfbproj
+++ b/log4net.shfbproj
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more 
+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. 
+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 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
@@ -42,7 +42,7 @@
     <Preliminary>False</Preliminary>
     <NamingMethod>MemberName</NamingMethod>
     <HelpTitle>Apache log4net™ SDK Documentation</HelpTitle>
-    <CopyrightText>Copyright 2004-2017 The Apache Software Foundation</CopyrightText>
+    <CopyrightText>Copyright 2004-2018 The Apache Software Foundation</CopyrightText>
     <CopyrightHref>http://logging.apache.org/log4net/</CopyrightHref>
     <ContentPlacement>AboveNamespaces</ContentPlacement>
     <DocumentationSources>
diff --git a/netstandard/1.3/log4net.netstandard.sln b/netstandard/1.3/log4net.netstandard.sln
new file mode 100644
index 0000000..e79c8d6
--- /dev/null
+++ b/netstandard/1.3/log4net.netstandard.sln
@@ -0,0 +1,54 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+#
+# 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.
+#
+VisualStudioVersion = 15.0.26114.2
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "log4net", "log4net\log4net.csproj", "{00764202-B361-4BC8-A1B9-01D87F9D2D51}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "log4net.tests", "log4net.tests\log4net.tests.csproj", "{6A78D53B-C864-4316-AA00-F2EBFE975223}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4BB38D1C-1862-432B-881C-925714F7F997}"
+	ProjectSection(SolutionItems) = preProject
+		nuget.config = nuget.config
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {8DFAD82F-72D1-4CE7-8CFB-06E7F7B2B0A9}
+	EndGlobalSection
+EndGlobal
diff --git a/netstandard/log4net.tests/ApplicationException.cs b/netstandard/1.3/log4net.tests/ApplicationException.cs
similarity index 100%
rename from netstandard/log4net.tests/ApplicationException.cs
rename to netstandard/1.3/log4net.tests/ApplicationException.cs
diff --git a/netstandard/log4net.tests/CompatibilityExtensions.cs b/netstandard/1.3/log4net.tests/CompatibilityExtensions.cs
similarity index 100%
rename from netstandard/log4net.tests/CompatibilityExtensions.cs
rename to netstandard/1.3/log4net.tests/CompatibilityExtensions.cs
diff --git a/netstandard/log4net.tests/ExpectedExceptionAttribute.cs b/netstandard/1.3/log4net.tests/ExpectedExceptionAttribute.cs
similarity index 100%
rename from netstandard/log4net.tests/ExpectedExceptionAttribute.cs
rename to netstandard/1.3/log4net.tests/ExpectedExceptionAttribute.cs
diff --git a/netstandard/1.3/log4net.tests/log4net.tests.csproj b/netstandard/1.3/log4net.tests/log4net.tests.csproj
new file mode 100755
index 0000000..157c6fa
--- /dev/null
+++ b/netstandard/1.3/log4net.tests/log4net.tests.csproj
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+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 Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <VersionPrefix>2.0.9</VersionPrefix>
+    <TargetFramework>netcoreapp2.0</TargetFramework>
+    <DefineConstants>$(DefineConstants);NETSTANDARD1_3</DefineConstants>
+    <AssemblyName>log4net.tests</AssemblyName>
+    <PackageId>log4net.tests</PackageId>
+    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
+    <AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8</AssetTargetFallback>
+    <RuntimeFrameworkVersion>2.0.7</RuntimeFrameworkVersion>
+    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
+    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
+    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
+    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(OS)' != 'Windows_NT'">
+    <DefineConstants>$(DefineConstants);NET_STANDARD_1_ON_LINUX</DefineConstants>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Include="../../../tests/src/*.cs;../../../tests/src/Appender/AppenderCollectionTest.cs;../../../tests/src/Appender/BufferingAppenderTest.cs;../../../tests/src/Appender/CountingAppender.cs;../../../tests/src/Appender/MemoryAppenderTest.cs;../../../tests/src/Appender/RollingFileAppenderTest.cs;../../../tests/src/Appender/SmtpPickupDirAppenderTest.cs;../../../tests/src/Appender/StringAppender.cs;../../../tests/src/Appender/TraceAppenderTest.cs;../../../tests/src/Context/LogicalThreadContextTest.cs;../../../tests/src/Context/ThreadContextTest.cs;../../../tests/src/Co../../../*.cs;../../../tests/src/DateFormatt../../../*.cs;../../../tests/src/Hierarc../../../*.cs;../../../tests/src/Layo../../../*.cs;../../../tests/src/LoggerReposito../../../*.cs;../../../tests/src/Util/CyclicBufferTest.cs;../../../tests/src/Util/LogLogTest.cs;../../../tests/src/Util/PatternConverterTest.cs;../../../tests/src/Util/RandomStringPatternConverterTest.cs;../../../tests/src/Util/SystemInfoTest.cs;../../../tests/src/Util/TransformTest.cs" Exclude="bin/**;obj/**;**/*.xproj;packages/**" />
+  </ItemGroup>
+
+  <ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">
+    <ProjectReference Include="../log4net/log4net.csproj" />
+    <PackageReference Include="NUnit" Version="3.9.0" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
+    <PackageReference Include="NUnit" Version="3.10.1" />
+    <PackageReference Include="NUnit3TestAdapter" Version="3.10.0" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\log4net\log4net.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/netstandard/log4net/CompatibilityExtensions.cs b/netstandard/1.3/log4net/CompatibilityExtensions.cs
similarity index 100%
rename from netstandard/log4net/CompatibilityExtensions.cs
rename to netstandard/1.3/log4net/CompatibilityExtensions.cs
diff --git a/netstandard/1.3/log4net/log4net.csproj b/netstandard/1.3/log4net/log4net.csproj
new file mode 100755
index 0000000..460d549
--- /dev/null
+++ b/netstandard/1.3/log4net/log4net.csproj
@@ -0,0 +1,79 @@
+<?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 Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <Copyright>Copyright 2004-2018 The Apache Software Foundation.</Copyright>
+    <AssemblyTitle>Apache log4net for .NET Core</AssemblyTitle>
+    <VersionPrefix>2.0.9</VersionPrefix>
+    <TargetFramework>netstandard1.3</TargetFramework>
+    <AssemblyName>log4net</AssemblyName>
+    <PackageId>log4net</PackageId>
+    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
+    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
+    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
+    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
+    <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
+    <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
+    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
+    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
+    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
+  </PropertyGroup>
+
+  <PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
+    <DefineConstants>$(DefineConstants);HAS_READERWRITERLOCKSLIM</DefineConstants>
+    <PublicSign>true</PublicSign>
+	<AssemblyOriginatorKeyFile>../../../log4net.snk</AssemblyOriginatorKeyFile>
+    <SignAssembly>true</SignAssembly>
+  </PropertyGroup>
+
+  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
+    <Compile Remove="..\..\..\src\Appender\AdoNetAppender.cs;..\..\..\src\Appender\AspNetTraceAppender.cs;..\..\..\src\Appender\ColoredConsoleAppender.cs;..\..\..\src\Appender\EventLogAppender.cs;..\..\..\src\Appender\NetSendAppender.cs;..\..\..\src\Appender\RemotingAppender.cs;..\..\..\src\Appender\SmtpAppender.cs;..\..\..\src\Config\DOMConfigurator.cs;..\..\..\src\Config\DOMConfiguratorAttribute.cs;..\..\..\src\Config\Log4NetConfigurationSectionHandler.cs;..\..\..\src\Layout\Pattern\AspNetCachePatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetContextPatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetPatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetRequestPatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetSessionPatternConverter.cs;..\..\..\src\Layout\Pattern\StackTraceDetailPatternConverter.cs;..\..\..\src\Layout\Pattern\StackTracePatternConverter.cs;..\..\..\src\Plugin\RemoteLoggingServerPlugin.cs;..\..\..\src\Util\PatternStringConverters\AppSettingPatternConverter.cs;..\..\..\src\Util\PatternStringConverters\EnvironmentFolderPathPatternConverter.cs;..\..\..\src\Util\NativeError.cs;..\..\..\src\Util\WindowsSecurityContext.cs" />
+   <Compile Include="..\..\..\src\**\*.cs" Exclude="..\..\..\src\Appender\AdoNetAppender.cs;..\..\..\src\Appender\AspNetTraceAppender.cs;..\..\..\src\Appender\ColoredConsoleAppender.cs;..\..\..\src\Appender\EventLogAppender.cs;..\..\..\src\Appender\NetSendAppender.cs;..\..\..\src\Appender\RemotingAppender.cs;..\..\..\src\Appender\SmtpAppender.cs;..\..\..\src\Config\DOMConfigurator.cs;..\..\..\src\Config\DOMConfiguratorAttribute.cs;..\..\..\src\Config\Log4NetConfigurationSectionHandler.cs;..\..\..\src\Layout\Pattern\AspNetCachePatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetContextPatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetPatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetRequestPatternConverter.cs;..\..\..\src\Layout\Pattern\AspNetSessionPatternConverter.cs;..\..\..\src\Layout\Pattern\StackTraceDetailPatternConverter.cs;..\..\..\src\Layout\Pattern\StackTracePatternConverter.cs;..\..\..\src\Plugin\RemoteLoggingServerPlugin.cs;..\..\..\src\Util\PatternStringConverters\AppSettingPatternConverter.cs;..\..\..\src\Util\PatternStringConverters\EnvironmentFolderPathPatternConverter.cs;..\..\..\src\Util\NativeError.cs;..\..\..\src\Util\WindowsSecurityContext.cs;bin\**;obj\**;**\*.xproj;packages\**" />
+  </ItemGroup>
+
+  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
+    <PackageReference Include="System.AppContext" Version="4.3.0" />
+    <PackageReference Include="System.Collections.NonGeneric" Version="4.0.1" />
+    <PackageReference Include="System.Console" Version="4.3.0" />
+    <PackageReference Include="System.Diagnostics.Debug" Version="4.3.0" />
+    <PackageReference Include="System.Diagnostics.Process" Version="4.1.0" />
+    <PackageReference Include="System.Diagnostics.StackTrace" Version="4.0.1" />
+    <PackageReference Include="System.Diagnostics.TraceSource" Version="4.0.0" />
+    <PackageReference Include="System.IO.FileSystem" Version="4.3.0" />
+    <PackageReference Include="System.IO.FileSystem.Watcher" Version="4.0.0" />
+    <PackageReference Include="System.Linq" Version="4.3.0" />
+    <PackageReference Include="System.Net.NameResolution" Version="4.0.0" />
+    <PackageReference Include="System.Net.Requests" Version="4.0.11" />
+    <PackageReference Include="System.Net.Sockets" Version="4.3.0" />
+    <PackageReference Include="System.Reflection" Version="4.3.0" />
+    <PackageReference Include="System.Reflection.Extensions" Version="4.3.0" />
+    <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
+    <PackageReference Include="System.Runtime.Extensions" Version="4.3.0" />
+    <PackageReference Include="System.Runtime.InteropServices" Version="4.3.0" />
+    <PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.3.0" />
+    <PackageReference Include="System.Runtime.Serialization.Formatters" Version="4.3.0" />
+    <PackageReference Include="System.Text.RegularExpressions" Version="4.3.0" />
+    <PackageReference Include="System.Threading" Version="4.3.0" />
+    <PackageReference Include="System.Threading.Thread" Version="4.0.0" />
+    <PackageReference Include="System.Threading.Timer" Version="4.3.0" />
+    <PackageReference Include="System.Xml.ReaderWriter" Version="4.3.0" />
+    <PackageReference Include="System.Xml.XmlDocument" Version="4.0.1" />
+  </ItemGroup>
+
+</Project>
diff --git a/netstandard/log4net.netstandard.sln b/netstandard/log4net.netstandard.sln
deleted file mode 100644
index c578a2e..0000000
--- a/netstandard/log4net.netstandard.sln
+++ /dev/null
@@ -1,33 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.26114.2
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "log4net", "log4net\log4net.csproj", "{00764202-B361-4BC8-A1B9-01D87F9D2D51}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "log4net.tests", "log4net.tests\log4net.tests.csproj", "{6A78D53B-C864-4316-AA00-F2EBFE975223}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4BB38D1C-1862-432B-881C-925714F7F997}"
-	ProjectSection(SolutionItems) = preProject
-		nuget.config = nuget.config
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{00764202-B361-4BC8-A1B9-01D87F9D2D51}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{6A78D53B-C864-4316-AA00-F2EBFE975223}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
diff --git a/netstandard/log4net.tests/log4net.tests.csproj b/netstandard/log4net.tests/log4net.tests.csproj
deleted file mode 100755
index 69d5fcb..0000000
--- a/netstandard/log4net.tests/log4net.tests.csproj
+++ /dev/null
@@ -1,32 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <VersionPrefix>2.0.9</VersionPrefix>
-    <TargetFramework>netcoreapp1.0</TargetFramework>
-    <DefineConstants>$(DefineConstants);NETSTANDARD1_3</DefineConstants>
-    <AssemblyName>log4net.tests</AssemblyName>
-    <PackageId>log4net.tests</PackageId>
-    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
-    <PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8</PackageTargetFallback>
-    <RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
-    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
-    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
-    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
-    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <Compile Include="..\..\tests\src\*.cs;..\..\tests\src\Appender\AppenderCollectionTest.cs;..\..\tests\src\Appender\BufferingAppenderTest.cs;..\..\tests\src\Appender\CountingAppender.cs;..\..\tests\src\Appender\MemoryAppenderTest.cs;..\..\tests\src\Appender\RollingFileAppenderTest.cs;..\..\tests\src\Appender\SmtpPickupDirAppenderTest.cs;..\..\tests\src\Appender\StringAppender.cs;..\..\tests\src\Appender\TraceAppenderTest.cs;..\..\tests\src\Context\LogicalThreadContextTest.cs;..\..\tests\src\Context\ThreadContextTest.cs;..\..\tests\src\Core\**\*.cs;..\..\tests\src\DateFormatter\**\*.cs;..\..\tests\src\Hierarchy\**\*.cs;..\..\tests\src\Layout\**\*.cs;..\..\tests\src\LoggerRepository\**\*.cs;..\..\tests\src\Util\CyclicBufferTest.cs;..\..\tests\src\Util\LogLogTest.cs;..\..\tests\src\Util\PatternConverterTest.cs;..\..\tests\src\Util\RandomStringPatternConverterTest.cs;..\..\tests\src\Util\SystemInfoTest.cs;..\..\tests\src\Util\TransformTest.cs" Exclude="bin\**;obj\**;**\*.xproj;packages\**" />
-  </ItemGroup>
-
-  <ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">
-    <ProjectReference Include="../log4net/log4net.csproj" />
-    <PackageReference Include="dotnet-test-nunit" Version="3.4.0-beta-2" />
-    <PackageReference Include="NUnit" Version="3.4.1" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
-  </ItemGroup>
-
-</Project>
diff --git a/netstandard/log4net/log4net.csproj b/netstandard/log4net/log4net.csproj
deleted file mode 100755
index 05171e7..0000000
--- a/netstandard/log4net/log4net.csproj
+++ /dev/null
@@ -1,62 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <Copyright>Copyright 2004-2017 The Apache Software Foundation.</Copyright>
-    <AssemblyTitle>Apache log4net for .NET Core</AssemblyTitle>
-    <VersionPrefix>2.0.9</VersionPrefix>
-    <TargetFramework>netstandard1.3</TargetFramework>
-    <AssemblyName>log4net</AssemblyName>
-    <PackageId>log4net</PackageId>
-    <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
-    <GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
-    <GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute>
-    <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
-    <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
-    <GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>
-    <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
-    <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
-    <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
-  </PropertyGroup>
-
-  <PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
-    <DefineConstants>$(DefineConstants);HAS_READERWRITERLOCKSLIM</DefineConstants>
-    <PublicSign>true</PublicSign>
-    <AssemblyOriginatorKeyFile>../../log4net.snk</AssemblyOriginatorKeyFile>
-    <SignAssembly>true</SignAssembly>
-  </PropertyGroup>
-
-  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
-    <Compile Remove="..\..\src\Appender\AdoNetAppender.cs;..\..\src\Appender\AspNetTraceAppender.cs;..\..\src\Appender\ColoredConsoleAppender.cs;..\..\src\Appender\EventLogAppender.cs;..\..\src\Appender\NetSendAppender.cs;..\..\src\Appender\RemotingAppender.cs;..\..\src\Appender\SmtpAppender.cs;..\..\src\Config\DOMConfigurator.cs;..\..\src\Config\DOMConfiguratorAttribute.cs;..\..\src\Config\Log4NetConfigurationSectionHandler.cs;..\..\src\Layout\Pattern\AspNetCachePatternConverter.cs;..\..\src\Layout\Pattern\AspNetContextPatternConverter.cs;..\..\src\Layout\Pattern\AspNetPatternConverter.cs;..\..\src\Layout\Pattern\AspNetRequestPatternConverter.cs;..\..\src\Layout\Pattern\AspNetSessionPatternConverter.cs;..\..\src\Layout\Pattern\StackTraceDetailPatternConverter.cs;..\..\src\Layout\Pattern\StackTracePatternConverter.cs;..\..\src\Plugin\RemoteLoggingServerPlugin.cs;..\..\src\Util\PatternStringConverters\AppSettingPatternConverter.cs;..\..\src\Util\PatternStringConverters\EnvironmentFolderPathPatternConverter.cs;..\..\src\Util\NativeError.cs;..\..\src\Util\WindowsSecurityContext.cs" />
-    <Compile Include="..\..\src\**\*.cs" Exclude="..\..\src\Appender\AdoNetAppender.cs;..\..\src\Appender\AspNetTraceAppender.cs;..\..\src\Appender\ColoredConsoleAppender.cs;..\..\src\Appender\EventLogAppender.cs;..\..\src\Appender\NetSendAppender.cs;..\..\src\Appender\RemotingAppender.cs;..\..\src\Appender\SmtpAppender.cs;..\..\src\Config\DOMConfigurator.cs;..\..\src\Config\DOMConfiguratorAttribute.cs;..\..\src\Config\Log4NetConfigurationSectionHandler.cs;..\..\src\Layout\Pattern\AspNetCachePatternConverter.cs;..\..\src\Layout\Pattern\AspNetContextPatternConverter.cs;..\..\src\Layout\Pattern\AspNetPatternConverter.cs;..\..\src\Layout\Pattern\AspNetRequestPatternConverter.cs;..\..\src\Layout\Pattern\AspNetSessionPatternConverter.cs;..\..\src\Layout\Pattern\StackTraceDetailPatternConverter.cs;..\..\src\Layout\Pattern\StackTracePatternConverter.cs;..\..\src\Plugin\RemoteLoggingServerPlugin.cs;..\..\src\Util\PatternStringConverters\AppSettingPatternConverter.cs;..\..\src\Util\PatternStringConverters\EnvironmentFolderPathPatternConverter.cs;..\..\src\Util\NativeError.cs;..\..\src\Util\WindowsSecurityContext.cs;bin\**;obj\**;**\*.xproj;packages\**" />
-  </ItemGroup>
-
-  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">
-    <PackageReference Include="System.AppContext" Version="4.1.0" />
-    <PackageReference Include="System.Collections.NonGeneric" Version="4.0.1" />
-    <PackageReference Include="System.Console" Version="4.0.0" />
-    <PackageReference Include="System.Diagnostics.Debug" Version="4.0.11" />
-    <PackageReference Include="System.Diagnostics.Process" Version="4.1.0" />
-    <PackageReference Include="System.Diagnostics.StackTrace" Version="4.0.1" />
-    <PackageReference Include="System.Diagnostics.TraceSource" Version="4.0.0" />
-    <PackageReference Include="System.IO.FileSystem" Version="4.0.1" />
-    <PackageReference Include="System.IO.FileSystem.Watcher" Version="4.0.0" />
-    <PackageReference Include="System.Linq" Version="4.1.0" />
-    <PackageReference Include="System.Net.NameResolution" Version="4.0.0" />
-    <PackageReference Include="System.Net.Requests" Version="4.0.11" />
-    <PackageReference Include="System.Net.Sockets" Version="4.1.0" />
-    <PackageReference Include="System.Reflection" Version="4.3.0" />
-    <PackageReference Include="System.Reflection.Extensions" Version="4.0.1" />
-    <PackageReference Include="System.Reflection.TypeExtensions" Version="4.1.0" />
-    <PackageReference Include="System.Runtime.Extensions" Version="4.1.0" />
-    <PackageReference Include="System.Runtime.InteropServices" Version="4.1.0" />
-    <PackageReference Include="System.Runtime.InteropServices.RuntimeInformation" Version="4.0.0" />
-    <PackageReference Include="System.Runtime.Serialization.Formatters" Version="4.3.0" />
-    <PackageReference Include="System.Text.RegularExpressions" Version="4.1.0" />
-    <PackageReference Include="System.Threading" Version="4.0.11" />
-    <PackageReference Include="System.Threading.Thread" Version="4.0.0" />
-    <PackageReference Include="System.Threading.Timer" Version="4.0.1" />
-    <PackageReference Include="System.Xml.ReaderWriter" Version="4.0.11" />
-    <PackageReference Include="System.Xml.XmlDocument" Version="4.0.1" />
-  </ItemGroup>
-
-</Project>
diff --git a/src/Appender/AdoNetAppender.cs b/src/Appender/AdoNetAppender.cs
index 530d875..214660f 100644
--- a/src/Appender/AdoNetAppender.cs
+++ b/src/Appender/AdoNetAppender.cs
@@ -545,23 +545,31 @@
 
 					// Set the command type
 					dbCmd.CommandType = CommandType;
+
 					// Send buffer using the prepared command object
 					if (dbTran != null)
 					{
 						dbCmd.Transaction = dbTran;
 					}
+
+					// clear parameters that have been set
+					dbCmd.Parameters.Clear();
+					
+					// Add the query parameters
+					foreach (AdoNetAppenderParameter param in m_parameters)
+					{
+						param.Prepare(dbCmd);
+					}
+					
 					// prepare the command, which is significantly faster
 					dbCmd.Prepare();
+
 					// run for all events
 					foreach (LoggingEvent e in events)
 					{
-						// clear parameters that have been set
-						dbCmd.Parameters.Clear();
-
 						// Set the parameter values
 						foreach (AdoNetAppenderParameter param in m_parameters)
 						{
-							param.Prepare(dbCmd);
 							param.FormatValue(dbCmd, e);
 						}
 
diff --git a/src/AssemblyVersionInfo.cpp b/src/AssemblyVersionInfo.cpp
index 8e1dede..55e1062 100644
--- a/src/AssemblyVersionInfo.cpp
+++ b/src/AssemblyVersionInfo.cpp
@@ -1,9 +1,9 @@
 //
-// Licensed to the Apache Software Foundation (ASF) under one or more 
+// 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. 
+// 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 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
@@ -24,11 +24,11 @@
 // Version information for an assembly consists of the following four values:
 //
 //      Major Version
-//      Minor Version 
+//      Minor Version
 //      Build Number
 //      Revision
 //
-// You can specify all the value or you can default the Revision and Build Numbers 
+// You can specify all the value or you can default the Revision and Build Numbers
 // by using the '*' as shown below:
 
 [assembly: AssemblyVersionAttribute("2.0.9.0")];
@@ -44,5 +44,5 @@
 //
 
 [assembly: AssemblyCompany("The Apache Software Foundation")];
-[assembly: AssemblyCopyright("Copyright 2004-2017 The Apache Software Foundation.")];
+[assembly: AssemblyCopyright("Copyright 2004-2018 The Apache Software Foundation.")];
 [assembly: AssemblyTrademark("Apache and Apache log4net are trademarks of The Apache Software Foundation")];
diff --git a/src/AssemblyVersionInfo.cs b/src/AssemblyVersionInfo.cs
index 0ed9380..31b6356 100644
--- a/src/AssemblyVersionInfo.cs
+++ b/src/AssemblyVersionInfo.cs
@@ -41,5 +41,5 @@
 //
 
 [assembly: System.Reflection.AssemblyCompany("The Apache Software Foundation")]
-[assembly: System.Reflection.AssemblyCopyright("Copyright 2004-2017 The Apache Software Foundation.")]
+[assembly: System.Reflection.AssemblyCopyright("Copyright 2004-2018 The Apache Software Foundation.")]
 [assembly: System.Reflection.AssemblyTrademark("Apache and Apache log4net are trademarks of The Apache Software Foundation")]
diff --git a/src/AssemblyVersionInfo.js b/src/AssemblyVersionInfo.js
index ed81785..4b14bf8 100644
--- a/src/AssemblyVersionInfo.js
+++ b/src/AssemblyVersionInfo.js
@@ -1,9 +1,9 @@
 //
-// Licensed to the Apache Software Foundation (ASF) under one or more 
+// 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. 
+// 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 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
@@ -20,11 +20,11 @@
 // Version information for an assembly consists of the following four values:
 //
 //      Major Version
-//      Minor Version 
+//      Minor Version
 //      Build Number
 //      Revision
 //
-// You can specify all the values or you can default the Revision and Build Numbers 
+// You can specify all the values or you can default the Revision and Build Numbers
 // by using the '*' as shown below:
 
 // JScript.NET doesn't handle files with only custom attributes very well, adding
@@ -45,5 +45,5 @@
 //
 
 [assembly: AssemblyCompany("The Apache Software Foundation")]
-[assembly: AssemblyCopyright("Copyright 2004-2017 The Apache Software Foundation.")]
+[assembly: AssemblyCopyright("Copyright 2004-2018 The Apache Software Foundation.")]
 [assembly: AssemblyTrademark("Apache and Apache log4net are trademarks of The Apache Software Foundation")]
diff --git a/src/AssemblyVersionInfo.vb b/src/AssemblyVersionInfo.vb
index 8e6709e..656bade 100644
--- a/src/AssemblyVersionInfo.vb
+++ b/src/AssemblyVersionInfo.vb
@@ -1,10 +1,10 @@
 #Region "Apache License"
 '
-' Licensed to the Apache Software Foundation (ASF) under one or more 
+' 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. 
+' 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 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
@@ -21,11 +21,11 @@
 ' Version information for an assembly consists of the following four values:
 '
 '      Major Version
-'      Minor Version 
+'      Minor Version
 '      Build Number
 '      Revision
 '
-' You can specify all the values or you can default the Revision and Build Numbers 
+' You can specify all the values or you can default the Revision and Build Numbers
 ' by using the '*' as shown below:
 
 <Assembly: System.Reflection.AssemblyVersion("2.0.9.0")>
@@ -42,5 +42,5 @@
 '
 
 <Assembly: System.Reflection.AssemblyCompany("The Apache Software Foundation")>
-<Assembly: System.Reflection.AssemblyCopyright("Copyright 2004-2017 The Apache Software Foundation.")> 
-<Assembly: System.Reflection.AssemblyTrademark("Apache and Apache log4net are trademarks of The Apache Software Foundation")> 
+<Assembly: System.Reflection.AssemblyCopyright("Copyright 2004-2018 The Apache Software Foundation.")>
+<Assembly: System.Reflection.AssemblyTrademark("Apache and Apache log4net are trademarks of The Apache Software Foundation")>
diff --git a/src/Config/XmlConfigurator.cs b/src/Config/XmlConfigurator.cs
index 7c81a36..f158a86 100644
--- a/src/Config/XmlConfigurator.cs
+++ b/src/Config/XmlConfigurator.cs
@@ -736,9 +736,9 @@
 #if NETSTANDARD1_3 // TODO DtdProcessing.Parse not yet available (https://github.com/dotnet/corefx/issues/4376)
 					settings.DtdProcessing = DtdProcessing.Ignore;
 #elif !NET_4_0 && !MONO_4_0
-					settings.ProhibitDtd = false;
+					settings.ProhibitDtd = true;
 #else
-					settings.DtdProcessing = DtdProcessing.Parse;
+					settings.DtdProcessing = DtdProcessing.Ignore;
 #endif
 
 					// Create a reader over the input stream
diff --git a/src/Repository/Hierarchy/Hierarchy.cs b/src/Repository/Hierarchy/Hierarchy.cs
index c45a56a..7d71872 100644
--- a/src/Repository/Hierarchy/Hierarchy.cs
+++ b/src/Repository/Hierarchy/Hierarchy.cs
@@ -21,7 +21,6 @@
 using System.Collections;
 using log4net.Appender;
 using log4net.Core;
-using log4net.Repository;
 using log4net.Util;
 
 namespace log4net.Repository.Hierarchy
@@ -236,7 +235,7 @@
 			{
 				if (m_root == null)
 				{
-					lock(this)
+					lock (this)
 					{
 						if (m_root == null)
 						{
@@ -297,7 +296,7 @@
 				throw new ArgumentNullException("name");
 			}
 
-			lock(m_ht)
+			lock (m_ht)
 			{
 				return m_ht[new LoggerKey(name)] as Logger;
 			}
@@ -319,12 +318,12 @@
 			// The accumulation in loggers is necessary because not all elements in
 			// ht are Logger objects as there might be some ProvisionNodes
 			// as well.
-			lock(m_ht)
+			lock (m_ht)
 			{
 				System.Collections.ArrayList loggers = new System.Collections.ArrayList(m_ht.Count);
 
 				// Iterate through m_ht values
-				foreach(object node in m_ht.Values)
+				foreach (object node in m_ht.Values)
 				{
 					if (node is Logger)
 					{
@@ -385,16 +384,16 @@
 		/// </remarks>
 		override public void Shutdown()
 		{
-			LogLog.Debug(declaringType, "Shutdown called on Hierarchy ["+this.Name+"]");
+			LogLog.Debug(declaringType, "Shutdown called on Hierarchy [" + this.Name + "]");
 
 			// begin by closing nested appenders
 			Root.CloseNestedAppenders();
 
-			lock(m_ht)
+			lock (m_ht)
 			{
 				ILogger[] currentLoggers = this.GetCurrentLoggers();
 
-				foreach(Logger logger in currentLoggers)
+				foreach (Logger logger in currentLoggers)
 				{
 					logger.CloseNestedAppenders();
 				}
@@ -402,7 +401,7 @@
 				// then, remove all appenders
 				Root.RemoveAllAppenders();
 
-				foreach(Logger logger in currentLoggers)
+				foreach (Logger logger in currentLoggers)
 				{
 					logger.RemoveAllAppenders();
 				}
@@ -437,11 +436,11 @@
 			Threshold = LevelMap.LookupWithDefault(Level.All);
 
 			// the synchronization is needed to prevent hashtable surprises
-			lock(m_ht)
+			lock (m_ht)
 			{
 				Shutdown(); // nested locks are OK
 
-				foreach(Logger l in this.GetCurrentLoggers())
+				foreach (Logger l in this.GetCurrentLoggers())
 				{
 					l.Level = null;
 					l.Additivity = true;
@@ -500,7 +499,7 @@
 
 			CollectAppenders(appenderList, Root);
 
-			foreach(Logger logger in GetCurrentLoggers())
+			foreach (Logger logger in GetCurrentLoggers())
 			{
 				CollectAppenders(appenderList, logger);
 			}
@@ -539,7 +538,7 @@
 		/// <param name="container"></param>
 		private static void CollectAppenders(System.Collections.ArrayList appenderList, IAppenderAttachable container)
 		{
-			foreach(Appender.IAppender appender in container.Appenders)
+			foreach (Appender.IAppender appender in container.Appenders)
 			{
 				CollectAppender(appenderList, appender);
 			}
@@ -700,7 +699,7 @@
 		/// </remarks>
 		public void Clear()
 		{
-			lock(m_ht)
+			lock (m_ht)
 			{
 				m_ht.Clear();
 			}
@@ -738,7 +737,7 @@
 			// GetEffectiveLevel() method) are possible only if variable
 			// assignments are non-atomic.
 
-			lock(m_ht)
+			lock (m_ht)
 			{
 				Logger logger = null;
 
@@ -842,7 +841,7 @@
 			bool parentFound = false;
 
 			// if name = "w.x.y.z", loop through "w.x.y", "w.x" and "w", but not "w.x.y.z"
-			for(int i = name.LastIndexOf('.', length-1); i >= 0; i = name.LastIndexOf('.', i-1))
+			for (int i = name.LastIndexOf('.', length - 1); i >= 0; i = name.LastIndexOf('.', i - 1))
 			{
 				string substr = name.Substring(0, i);
 
@@ -872,11 +871,12 @@
 						}
 						else
 						{
-							LogLog.Error(declaringType, "Unexpected object type ["+node.GetType()+"] in ht.", new LogException());
+							LogLog.Error(declaringType, "Unexpected object type [" + node.GetType() + "] in ht.", new LogException());
 						}
 					}
 				}
-				if (i == 0) {
+				if (i == 0)
+				{
 					// logger name starts with a dot
 					// and we've hit the start
 					break;
@@ -916,7 +916,7 @@
 		/// </remarks>
 		private static void UpdateChildren(ProvisionNode pn, Logger log)
 		{
-			for(int i = 0; i < pn.Count; i++)
+			for (int i = 0; i < pn.Count; i++)
 			{
 				Logger childLogger = (Logger)pn[i];
 
@@ -953,7 +953,7 @@
 				Level previousLevel = LevelMap[levelEntry.Name];
 				if (previousLevel == null)
 				{
-					throw new InvalidOperationException("Cannot redefine level ["+levelEntry.Name+"] because it is not defined in the LevelMap. To define the level supply the level value.");
+					throw new InvalidOperationException("Cannot redefine level [" + levelEntry.Name + "] because it is not defined in the LevelMap. To define the level supply the level value.");
 				}
 
 				levelEntry.Value = previousLevel.Value;
@@ -1031,7 +1031,7 @@
 			/// <returns>string info about this object</returns>
 			public override string ToString()
 			{
-				return "LevelEntry(Value="+m_levelValue+", Name="+m_levelName+", DisplayName="+m_levelDisplayName+")";
+				return "LevelEntry(Value=" + m_levelValue + ", Name=" + m_levelName + ", DisplayName=" + m_levelDisplayName + ")";
 			}
 		}
 
diff --git a/src/Util/ReadOnlyPropertiesDictionary.cs b/src/Util/ReadOnlyPropertiesDictionary.cs
index e7e0fe1..3efa0a9 100644
--- a/src/Util/ReadOnlyPropertiesDictionary.cs
+++ b/src/Util/ReadOnlyPropertiesDictionary.cs
@@ -216,13 +216,18 @@
 				string entryKey = entry.Key as string;
 				object entryValue = entry.Value;
 
+				if (entryKey == null || entryValue == null)
+				{
+					continue;
+				}
+
 				// If value is serializable then we add it to the list
 #if NETSTANDARD1_3
 				bool isSerializable = entryValue.GetType().GetTypeInfo().IsSerializable;
 #else
 				bool isSerializable = entryValue.GetType().IsSerializable;
 #endif
-				if (entryKey != null && entryValue != null && isSerializable)
+				if (isSerializable)
 				{
 					// Store the keys as an Xml encoded local name as it may contain colons (':')
 					// which are NOT escaped by the Xml Serialization framework.
diff --git a/src/site/site.xml b/src/site/site.xml
index aefdd5c..aa20cb6 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -30,6 +30,7 @@
 		<menu name="Apache log4net" inherit="top" img="icon-home">
 			<item name="About" href="/index.html"/>
 			<item name="Download" href="/download_log4net.cgi"/>
+			<item name="Security Reports" href="/release/security-reports.html"/>
 			<item name="Release Notes" href="/release/release-notes.html"/>
 			<item name="License" href="/license.html"/>
 		</menu>
@@ -66,8 +67,8 @@
                 </menu>
 
 		<menu name="Apache" inherit="top" img="icon-info-sign">
-			<item name="Home" href="http://www.apache.org/"/>	
-			<item name="License" href="http://www.apache.org/licenses/"/>	
+			<item name="Home" href="http://www.apache.org/"/>
+			<item name="License" href="http://www.apache.org/licenses/"/>
 			<item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
 			<item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
 			<item name="Security" href="http://www.apache.org/security/"/>
diff --git a/src/site/xdoc/release/security-reports.xml b/src/site/xdoc/release/security-reports.xml
new file mode 100644
index 0000000..30c57bd
--- /dev/null
+++ b/src/site/xdoc/release/security-reports.xml
@@ -0,0 +1,64 @@
+<?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.
+-->
+<document>
+    <properties>
+        <title>Apache log4net: Security Reports</title>
+        <author email="dev@logging.apache.org">Logging Documentation Team</author>
+    </properties>
+    <body>
+      <section name="General Information">
+        <p>For information about reporting or asking questions about
+        security problems, please see the <a
+        href="https://logging.apache.org/security.html">security page
+        of the Logging project</a>.</p>
+      </section>
+
+      <section name="Apache log4net Security Vulnerabilities">
+        <p>This page lists all security vulnerabilities fixed in
+        released versions of Apache log4net. Each
+        vulnerability is given a security impact rating by the
+        development team - please note that this rating may vary from
+        platform to platform. We also list the versions of log4net the
+		flaw is known to affect, and where a flaw has not
+        been verified list the version with a question mark.</p>
+
+        <p>Please note that binary patches are never provided. If you
+        need to apply a source code patch, use the building
+        instructions for the log4net version that you are
+        using.</p>
+
+        <p>If you need help on building log4net or other help
+        on following the instructions to mitigate the known
+        vulnerabilities listed here, please send your questions to the
+        public <a href="../mail-lists.html">Logging Users mailing
+        list</a>.</p>
+
+        <p>If you have encountered an unlisted security vulnerability
+        or other unexpected behaviour that has security impact, or if
+        the descriptions here are incomplete, please report them
+        privately to the Apache Security Team. Thank you.</p>
+
+	  </section>
+
+      <section name="Errors and Ommissions">
+        <p>Please report any errors or omissions to <a
+        href="../mail-lists.html">the dev mailing list</a>.</p>
+      </section>
+    </body>
+</document>
diff --git a/tests/nant.build b/tests/nant.build
index d18b3d1..9530685 100644
--- a/tests/nant.build
+++ b/tests/nant.build
@@ -1,10 +1,10 @@
 <?xml version="1.0" ?>
 <!--
-Licensed to the Apache Software Foundation (ASF) under one or more 
+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. 
+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 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
@@ -25,16 +25,16 @@
     <call target="set-build-configuration" />
 
     <target name="install-nunit">
-      <if test="${not file::exists('lib/${current.build.configuration.dir}/nunit.framework.dll')}">
-	<get src="https://github.com/nunit/nunitv2/releases/download/2.6.4/NUnit-2.6.4.zip"
-	     dest=".tmp-nunit.zip"/>
-	<unzip zipfile=".tmp-nunit.zip"
-	       todir=".tmp-nunit"/>
-	<copy file=".tmp-nunit/NUnit-2.6.4/bin/nunit.framework.dll"
-	      todir="lib/${current.build.configuration.dir}"/>
-	<delete file=".tmp-nunit.zip"/>
-	<delete dir=".tmp-nunit"/>
-      </if>
+        <if test="${not file::exists('lib/${current.build.configuration.dir}/nunit.framework.dll')}">
+            <get src="https://www.nuget.org/api/v2/package/NUnit/2.6.4"
+                 dest=".tmp-nunit.zip"/>
+            <unzip zipfile=".tmp-nunit.zip"
+                   todir=".tmp-nunit"/>
+            <copy file=".tmp-nunit/lib/nunit.framework.dll"
+                  todir="lib/${current.build.configuration.dir}"/>
+            <delete file=".tmp-nunit.zip"/>
+            <delete dir=".tmp-nunit"/>
+        </if>
     </target>
 
     <!-- Target for compiling the tests on all frameworks -->
@@ -295,7 +295,7 @@
             <references defaultexcludes="true">
                 <include name="mscorlib.dll" />
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Web.dll" />
                 <include name="System.Xml.dll" />
@@ -351,7 +351,7 @@
             <references defaultexcludes="true">
                 <!-- include name="mscorlib.dll" / -->
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Web.dll" />
                 <include name="System.Xml.dll" />
@@ -407,7 +407,7 @@
             <references defaultexcludes="true">
                 <!-- include name="mscorlib.dll" / -->
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Core.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Web.dll" />
@@ -464,7 +464,7 @@
             <references defaultexcludes="true">
                 <!-- include name="mscorlib.dll" / -->
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Core.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Web.dll" />
@@ -521,7 +521,7 @@
             <references defaultexcludes="true">
                 <include name="mscorlib.dll" />
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Web.dll" />
                 <include name="System.Xml.dll" />
@@ -577,7 +577,7 @@
             <references defaultexcludes="true">
                 <include name="mscorlib.dll" />
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Xml.dll" />
                 <include name="System.Runtime.Remoting.dll" />
@@ -632,7 +632,7 @@
             <references defaultexcludes="true">
                 <include name="mscorlib.dll" />
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Core.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Web.dll" />
@@ -689,7 +689,7 @@
             <references defaultexcludes="true">
                 <include name="mscorlib.dll" />
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Core.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Xml.dll" />
@@ -745,7 +745,7 @@
             <references defaultexcludes="true">
                 <include name="mscorlib.dll" />
                 <include name="System.dll" />
-		<include name="System.Configuration.dll" />
+        <include name="System.Configuration.dll" />
                 <include name="System.Core.dll" />
                 <include name="System.Data.dll" />
                 <include name="System.Web.dll" />
@@ -764,30 +764,30 @@
     <!-- Currently we cannot run the tests in the environment of the target framework only in the host framework -->
 
     <target name="runtests" description="Runs log4net tests">
-		<!--
-			Because the <nunit2> task does not support multiple frameworks through the 
-			nant.settings.currentframework setting we cannot just run the tests for each framework.
-			Only the tests for the current framework are run.
-			
+        <!--
+            Because the <nunit2> task does not support multiple frameworks through the
+            nant.settings.currentframework setting we cannot just run the tests for each framework.
+            Only the tests for the current framework are run.
+
         <if test="${framework::exists('net-1.0')}">
-        	<call target="runtests-net-1.0" />
+            <call target="runtests-net-1.0" />
         </if>
         <if test="${framework::exists('net-1.1')}">
-        	<call target="runtests-net-1.1" />
+            <call target="runtests-net-1.1" />
         </if>
         <if test="${framework::exists('net-2.0')}">
-        	<call target="runtests-net-2.0" />
+            <call target="runtests-net-2.0" />
         </if>
         <if test="${framework::exists('mono-2.0')}">
-        	<call target="runtests-mono-2.0" />
+            <call target="runtests-mono-2.0" />
         </if>
-		-->
-		<if test="${target::exists('runtests-' + nant.settings.currentframework)}">
-			<echo message="Running tests for ${framework::get-target-framework()}" />
-			<call target="runtests-${nant.settings.currentframework}" />
-		</if>
+        -->
+        <if test="${target::exists('runtests-' + nant.settings.currentframework)}">
+            <echo message="Running tests for ${framework::get-target-framework()}" />
+            <call target="runtests-${nant.settings.currentframework}" />
+        </if>
     </target>
-    
+
     <target name="runtests-net-1.0" description="Runs log4net tests on .NET Framework 1.0 version" depends="compile-net-1.0">
         <nunit2 failonerror="false">
             <formatter type="Xml" usefile="true" extension=".nunit.xml" outputdir="${current.bin.dir}" />
@@ -865,4 +865,22 @@
         </nunit2>
     </target>
 
+    <target name="runtests-netstandard-1.3" description="Runs log4net tests on .NET Standard 1.3">
+        <exec program="dotnet" workingdir="${log4net.basedir}/netstandard/1.3" failonerror="false">
+            <arg value="test"/>
+            <arg value="--logger:trx"/>
+            <arg value="-d"/>
+            <arg value="test.diagnostics.log"/>
+            <arg value="log4net.tests/log4net.tests.csproj" />
+        </exec>
+        <!-- move netstandard/1.3 to tests/bin/netstandard/1.3 -->
+        <move todir="${log4net.basedir}/tests/bin/netstandard/1.3/"
+              failonerror="false">
+              <fileset basedir="${log4net.basedir}/netstandard/1.3">
+                <include name="**/*.log" />
+                <include name="**/*.trx" />
+            </fileset>
+        </move>
+    </target>
+
 </project>
diff --git a/tests/src/Appender/RollingFileAppenderTest.cs b/tests/src/Appender/RollingFileAppenderTest.cs
index 07ebfec..c9d92e9 100644
--- a/tests/src/Appender/RollingFileAppenderTest.cs
+++ b/tests/src/Appender/RollingFileAppenderTest.cs
@@ -1561,8 +1561,10 @@
 
 			Assert.IsTrue(locked, "File was not locked");
 #if !MONO || MONO_3_5 || MONO_4_0 // at least on Linux with Mono 2.4 exclusive locking doesn't work as one would expect
+#if !NET_STANDARD_1_ON_LINUX // exclusive locking doesn't seem to work properly on .NET Core 1.x on Linux
 			AssertFileEquals(filename, "This is a message" + Environment.NewLine + "This is a message 2" + Environment.NewLine);
 #endif
+#endif
 			Assert.AreEqual("", sh.Message, "Unexpected error message");
 		}
 
diff --git a/tests/src/Hierarchy/Hierarchy.cs b/tests/src/Hierarchy/Hierarchy.cs
index 8c83290..446090f 100644
--- a/tests/src/Hierarchy/Hierarchy.cs
+++ b/tests/src/Hierarchy/Hierarchy.cs
@@ -22,9 +22,7 @@
 using System;
 using System.Xml;
 using log4net.Config;
-using log4net.Core;
 using log4net.Repository;
-using log4net.Repository.Hierarchy;
 using log4net.Tests.Appender;
 using NUnit.Framework;
 
@@ -100,7 +98,7 @@
 		}
 
 		[Test]
-	// LOG4NET-343
+		// LOG4NET-343
 		public void LoggerNameCanConsistOfASingleDot()
 		{
 			XmlDocument log4netConfig = new XmlDocument();
@@ -123,6 +121,52 @@
 		}
 
 		[Test]
+		// LOG4NET-580
+		public void LoggerNameCanConsistOfANameStartingWithADot()
+		{
+			XmlDocument log4netConfig = new XmlDocument();
+			log4netConfig.LoadXml(@"
+				<log4net>
+				  <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
+					<layout type=""log4net.Layout.SimpleLayout"" />
+				  </appender>
+				  <root>
+					<level value=""ALL"" />
+					<appender-ref ref=""StringAppender"" />
+				  </root>
+				  <logger name="".Name"">
+					<level value=""WARN"" />
+				  </logger>
+				</log4net>");
+
+			ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+			XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+		}
+
+		[Test]
+		// LOG4NET-580
+		public void LoggerNameCanConsistOfANameEndingWithADot()
+		{
+			XmlDocument log4netConfig = new XmlDocument();
+			log4netConfig.LoadXml(@"
+				<log4net>
+				  <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
+					<layout type=""log4net.Layout.SimpleLayout"" />
+				  </appender>
+				  <root>
+					<level value=""ALL"" />
+					<appender-ref ref=""StringAppender"" />
+				  </root>
+				  <logger name=""Name."">
+					<level value=""WARN"" />
+				  </logger>
+				</log4net>");
+
+			ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+			XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+		}
+
+		[Test]
 		public void LoggerNameCanConsistOfASingleNonDot()
 		{
 			XmlDocument log4netConfig = new XmlDocument();
diff --git a/tests/src/packages.config b/tests/src/packages.config
index e594870..bddd01c 100644
--- a/tests/src/packages.config
+++ b/tests/src/packages.config
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <!--
 Licensed to the Apache Software Foundation (ASF) under one or more 
 contributor license agreements. See the NOTICE file distributed with
@@ -17,4 +17,5 @@
 -->
 <packages>
   <package id="NUnit" version="2.6.4" targetFramework="net4" />
-</packages>
+  <package id="NUnitTestAdapter" version="2.1.1" targetFramework="net45" />
+</packages>
\ No newline at end of file