<?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

       https://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.
-->
<!DOCTYPE document
[
<!ELEMENT document (properties?, release+)>
<!ELEMENT properties (title)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT release (action*)>
<!ELEMENT action (#PCDATA)>
<!ATTLIST release
          version CDATA #REQUIRED
          date CDATA #REQUIRED
          description CDATA #IMPLIED>
<!ATTLIST action
          issue CDATA #IMPLIED
          type (add|fix|remove|update) #REQUIRED
          breaks-bwc (true|false) #IMPLIED>
]
>
  <document>
    <properties>
      <title>Apache .NET Ant Library</title>
    </properties>

    <release version="git master" date="unpublished">
      <action type="update" breaks-bwc="true">
        The coordinates inside the Ivy file have been changed to match
        those of the POM.
      </action>
      <action type="update" issue="51970" breaks-bwc="true">
        The &lt;csc&gt; task now uses dmcs rather than gmcs as default
        on non-Windows systems.  The executable attribute of the task
        can still be used to select the compiler explicitly.
      </action>
      <action type="add" issue="51023">
        The &lt;nunit&gt; task has a new executable attribute that can
        be used to override the name of the NUnit executable.
      </action>
    </release>

    <release version="1.1" date="2011-02-04">
      <action type="add" issue="47254">
        The wix task has an option to run lit.exe rather than
        light.exe now.
      </action>
      <action type="update" breaks-bwc="true">
        The C# compiler uses gmcs on Mono by default now.
      </action>
      <action type="add">
        A new F# compiler task has been added.
      </action>
      <action type="add" issue="47078">
        A new tallow task has been added to ease creation of WiX built
        installers.
      </action>
      <action type="update" issue="46968">
        The wix task has new nested elements that allow users to send
        addtional command line arguments to candle and light.
      </action>
      <action type="fix" issue="50611">
        The include and exclude arguments to NUnit were broken (they
        had a leading ",").
      </action>
      <action type="fix" issue="34992">
        The /noconfig argument must be used outside of a response file.
      </action>
      <action type="fix" issue="47789">
        CSC of .NET 3.5 doesn't support the /incremental argument
        anymore, only set /incremental+, but never /incremental-.
      </action>
      <action type="fix" issue="41387">
        The compilation tasks failed if the source files resided in a
        directory with spaces in its full path and a response file was
        used.
      </action>
    </release>

    <release version="1.0" date="2006-11-06">
      <action type="update" issue="40553">
        The NAnt and MSBuild task have new attributes failonerror and
        errorproperty that allow users to fine-tune Ant's behaviour if
        either of both signals an error.
      </action>

      <action type="update" issue="40552">
        The NUnit task has a new attribute errorproperty that allows
        users to set a property if NUnit signals a test failure.
      </action>
    </release>
  </document>
