Move src and binary release packaging into the NAnt script.

Project: http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/commit/ec8bc14f
Tree: http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/tree/ec8bc14f
Diff: http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/diff/ec8bc14f

Branch: refs/heads/1.4.x
Commit: ec8bc14f99ffb5794e94b52711cf85e7331f8357
Parents: be75a54
Author: Timothy A. Bish <[email protected]>
Authored: Thu Jun 17 20:49:27 2010 +0000
Committer: Timothy A. Bish <[email protected]>
Committed: Thu Jun 17 20:49:27 2010 +0000

----------------------------------------------------------------------
 trunk/nant-common.xml | 1178 ++++++++++++++++++++++----------------------
 trunk/nant.build      |   24 +
 2 files changed, 620 insertions(+), 582 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/ec8bc14f/trunk/nant-common.xml
----------------------------------------------------------------------
diff --git a/trunk/nant-common.xml b/trunk/nant-common.xml
index de5937f..b916d17 100644
--- a/trunk/nant-common.xml
+++ b/trunk/nant-common.xml
@@ -17,586 +17,600 @@
 -->
 <project xmlns="http://nant.sourceforge.net/release/0.85/nant.xsd";>
 
-       <!-- 
============================================================================================
 -->
-       <!--    P R O P E R T Y    D E F I N I T I O N S                        
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <!-- global project settings -->
-       <property name="project.cls.compliant"   value="true" 
unless="${property::exists('project.cls.compliant')}" />
-       <property name="project.release.type"    value="SNAPSHOT" 
unless="${property::exists('project.release.type')}" />
-       <property name="project.version.full"    value="${project.version + 
if(project.release.type == 'snapshot', '-' + project.release.type, '')}" 
dynamic="true" />
-       <property name="project.startyear"       value="2005" />
-       <property name="build.dir"               value="${basedir}/build" />
-       <property name="doc.dir"                 value="${build.dir}/doc" />
-       <property name="lib.dir"                 
value="${path::combine(basedir, 'lib')}" dynamic="true" />
-       <property name="lib.family.dir"          
value="${path::combine(lib.dir, 
framework::get-family(framework::get-target-framework()))}" dynamic="true" />
-       <property name="lib.framework.dir"       
value="${path::combine(lib.family.dir, 
version::to-string(framework::get-version(framework::get-target-framework())))}"
 dynamic="true" />
-
-       <!-- default configuration -->
-       <property name="build.defines"           value="" />
-       <property name="build.noskip"            value="false" />
-       <property name="build.skip"              value="false" />
-       <property name="build.skip.release"      value="false" 
unless="${property::exists('build.skip.release')}" />
-       <property name="compile.skip"            value="false" 
unless="${property::exists('compile.skip')}" />
-       <property name="current.build.config"    
value="${if(project.release.type == 'release', 'release', 'debug')}" 
overwrite="false" />
-       <property name="current.build.framework" 
value="${framework::get-target-framework()}" overwrite="false" />
-       <property name="current.build.defines"   value="${build.defines}" />
-       <property name="build.framework.strings" 
value="net-2.0,net-3.5,mono-2.0,netcf-2.0,netcf-3.5" 
unless="${property::exists('build.framework.strings')}"/>
-       <property name="current.build.framework.assembly.dir" 
value="${framework::get-assembly-directory(framework::get-target-framework())}" 
dynamic="true" />
-
-       <property name="build.config.strings"    
value="${if(property::exists('configuration'), configuration, 
if(build.skip.release == 'true', 'debug', 'debug,release'))}" dynamic="true" />
-
-       <!-- Figure out the user's HOME directory -->
-       <property name="user.home" value="${environment::get-variable('HOME')}"
-                       if="${environment::variable-exists('HOME') and 
platform::is-unix()}"
-                       unless="${property::exists('user.home')}" />
-       <property name="user.home" 
value="${environment::get-variable('USERPROFILE')}"
-                       if="${environment::variable-exists('USERPROFILE') and 
platform::is-windows()}"
-                       unless="${property::exists('user.home')}" />
-       <fail message="The HOME environment variable is not defined.  Please 
set it to your home directory."
-                       unless="${property::exists('user.home')}" 
if="${platform::is-unix()}" />
-       <fail message="The USERPROFILE environment variable is not defined.  
Please set it to your home directory."
-                       unless="${property::exists('user.home')}" 
if="${platform::is-windows()}" />
-
-       <!-- Figure out the NANT repositories -->
-       <property name="nant.remote.repo" 
value="${environment::get-variable('NANT_REMOTE_REPO')}"
-                       if="${environment::variable-exists('NANT_REMOTE_REPO')}"
-                       unless="${property::exists('nant.remote.repo')}" />
-       <property name="nant.local.repo" 
value="${environment::get-variable('NANT_REPO')}/local"
-                       if="${environment::variable-exists('NANT_REPO')}"
-                       unless="${property::exists('nant.local.repo')}" />
-       <property name="nant.local.repo" 
value="${user.home}/.nant/repository/local"
-                       unless="${property::exists('nant.local.repo')}" />
-
-       <!-- Figure out the keyfile location -->
-       <property name="snk.file" 
value="${environment::get-variable('ACTIVEMQ_DOTNET_SNK')}"
-                       
if="${environment::variable-exists('ACTIVEMQ_DOTNET_SNK')}"
-                       unless="${property::exists('snk.file')}" />
-       <property name="snk.file" value="${basedir}/keyfile/NMSKey.snk"
-                       if="${not property::exists('snk.file')}" />
-
-       <!-- 
============================================================================================
 -->
-       <!--      I N I T I A L I Z A T I O N     T A R G E T S                 
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <target name="init" description="Initializes build properties">
-               <!-- enabled the release or debug configuration -->
-               <call target="set-${current.build.config}-configuration" />
-
-               <!-- Check to see if our build setup for the target framework 
-->
-               <if 
test="${not(target::exists('set-'+current.build.framework+'-framework-configuration'))}">
-                       <fail message="The '${current.build.framework}' 
framework is not supported by this version of ActiveMQ .NET" />
-               </if>
-               <call 
target="set-${current.build.framework}-framework-configuration" />
-
-               <!-- Check to see current platform supports the target 
framework -->
-               <if test="${framework::exists(current.build.framework)}">
-                       <property name="build.skip" value="false" />
-               </if>
-               <if test="${not framework::exists(current.build.framework)}">
-                       <if test="${build.noskip}">
-                               <fail message="${current.build.framework.name} 
is not available." />
-                       </if>
-                       <if test="${not(build.noskip)}">
-                               <echo message="${current.build.framework.name} 
is not available. Build skipped." />
-                               <property name="build.skip" value="true" />
-                       </if>
-               </if>
-
-               <!-- Check to see if we should skip this build framework. -->
-               <if test="${not(build.skip)}">
-                       <if 
test="${property::exists('build.'+current.build.framework+'.skip')}">
-                               <property name="build.skip" value="true" />
-                               <echo message="The '${current.build.framework}' 
framework is not supported by this version of ActiveMQ .NET" />
-                       </if>
-               </if>
-
-               <property name="current.build.keysign" 
value="${current.build.framework.sign}" />
-               <property name="build.bin.dir" 
value="${build.dir}/${nant.settings.currentframework}/${current.build.config}" 
/>
-               <if test="${not(build.skip)}">
-                       <echo message="Doing ${if(current.build.keysign,'a 
signed','an unsigned')} ${current.build.config} build for the 
${current.build.framework.name} framework" />
-                       <mkdir dir="${build.bin.dir}" />
-               </if>
-               <call target="dependency-init" />
-       </target>
-
-       <!-- Generate four-digit build number -->
-       <target name="generate-build-number">
-               <if test="${not property::exists('project.version.numeric')}">
-                       <script language="C#">
-                               <imports>
-                                       <import 
namespace="System.Globalization" />
-                                       <import namespace="System.Threading" />
-                               </imports>
-                               <code>
-                                       <!-- Format for assembly revision is 
the number of days from the year the project 'started', property 
project.startyear.  -->
-                                       <![CDATA[
-                                               public static void 
ScriptMain(Project project)
-                                               {
-                                                       int startYear = 
Convert.ToInt32(project.Properties["project.startyear"]);
-                                                       DateTime start = new 
DateTime(startYear, 1, 1);
-                                                       TimeSpan ts = 
DateTime.Now - start;
-                                                       
project.Properties["project.version.numeric"] = 
project.Properties["project.version"].ToString() + "." + ts.Days.ToString();
-                                               }
-                                       ]]>
-                               </code>
-                       </script>
-               </if>
-       </target>
-
-       <!-- Generate assemblyinfo.cs files -->
-       <target name="generate-assemblyinfo" depends="generate-build-number" 
description="Generate the assembly info for the path in assemblyinfo.filename">
-               <asminfo output="${assemblyinfo.filename}" language="CSharp">
-                       <imports>
-                               <import namespace="System" />
-                               <import namespace="System.Reflection" />
-                               <import 
namespace="System.Runtime.InteropServices" />
-                       </imports>
-                       <attributes>
-                               <attribute type="ComVisibleAttribute" 
value="false" />
-                               <attribute type="CLSCompliantAttribute" 
value="${project.cls.compliant}" />
-                               <attribute type="AssemblyTitleAttribute" 
value="${project.short_description}" />
-                               <attribute type="AssemblyDescriptionAttribute" 
value="${project.description}" />
-                               <attribute 
type="AssemblyConfigurationAttribute" value="${project.release.type}" />
-                               <attribute type="AssemblyCompanyAttribute" 
value="http://activemq.apache.org/nms"; />
-                               <attribute type="AssemblyProductAttribute" 
value="${project.short_description}" />
-                               <attribute type="AssemblyCopyrightAttribute" 
value="Copyright (C) 
${project.startyear}-${datetime::get-year(datetime::now())} Apache Software 
Foundation" />
-                               <attribute type="AssemblyTrademarkAttribute" 
value="" />
-                               <attribute type="AssemblyCultureAttribute" 
value="" />
-                               <attribute type="AssemblyVersionAttribute" 
value="${project.version.numeric}" />
-                               <attribute 
type="AssemblyInformationalVersionAttribute" value="${project.version}" />
-                       </attributes>
-               </asminfo>
-       </target>
-
-       <!-- 
============================================================================================
 -->
-       <!--    C O N F I G U R A T I O N     T A R G E T S                     
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <target name="set-noskip-configuration" description="Disable skipping 
builds">
-               <property name="project.noskip" value="true" />
-       </target>
-
-       <target name="set-debug-configuration" description="Enabled 'debug' 
builds">
-               <property name="current.build.config" value="debug" />
-               <property name="current.build.config.debug" value="true" />
-               <property name="current.build.config.release" value="false" />
-               <property name="current.build.defines" 
value="${build.defines}DEBUG,TRACE," dynamic="true" />
-               <property name="csc.debug" value="Full" />
-               <property name="csc.optimize" value="false" />
-       </target>
-
-       <target name="set-release-configuration" description="Enabled 'release' 
builds">
-               <property name="current.build.config" value="release" />
-               <property name="current.build.config.release" value="true" />
-               <property name="current.build.config.debug" value="false" />
-               <property name="csc.debug" value="Full" />
-               <property name="csc.optimize" value="true" />
-       </target>
-
-       <target name="set-net-2.0-framework-configuration">
-               <property name="current.build.framework" value="net-2.0" />
-               <property name="current.build.framework.name" value=".NET 2.0" 
/>
-               <property name="current.build.defines" 
value="${build.defines}NET,NET_2_0" dynamic="true" />
-               <property name="current.build.framework.sign" value="true" />
-               <property name="link.sdkdoc.version" value="SDK_v2_0" />
-               <property name="link.sdkdoc.web" value="true" />
-               <if test="${framework::exists(current.build.framework)}">
-                       <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
-               </if>
-       </target>
-
-       <target name="set-net-3.5-framework-configuration">
-               <property name="current.build.framework" value="net-3.5" />
-               <property name="current.build.framework.name" value=".NET 3.5" 
/>
-               <property name="current.build.defines" 
value="${build.defines}NET,NET_2_0,NET_3_5" dynamic="true" />
-               <property name="current.build.framework.sign" value="true" />
-               <property name="link.sdkdoc.version" value="SDK_v6_1" />
-               <property name="link.sdkdoc.web" value="true" />
-               <if test="${framework::exists(current.build.framework)}">
-                       <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
-               </if>
-       </target>
-
-       <target name="set-netcf-2.0-framework-configuration">
-               <property name="current.build.framework" value="netcf-2.0" />
-               <property name="current.build.framework.name" value=".NET 
Compact Framework 2.0" />
-               <property name="current.build.defines" 
value="${build.defines}PocketPC,NETCF,NETCF_2_0" dynamic="true" />
-               <property name="current.build.framework.sign" value="true" />
-               <property name="link.sdkdoc.version" value="SDK_v1_1" />
-               <property name="link.sdkdoc.web" value="true" />
-               <if test="${framework::exists(current.build.framework)}">
-                       <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
-               </if>
-       </target>
-
-       <target name="set-netcf-3.5-framework-configuration">
-               <property name="current.build.framework" value="netcf-3.5" />
-               <property name="current.build.framework.name" value=".NET 
Compact Framework 3.5" />
-               <property name="current.build.defines" 
value="${build.defines}PocketPC,NETCF,NETCF_3_5" dynamic="true" />
-               <property name="current.build.framework.sign" value="true" />
-               <property name="link.sdkdoc.version" value="SDK_v3_5" />
-               <property name="link.sdkdoc.web" value="true" />
-               <if test="${framework::exists(current.build.framework)}">
-                       <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
-               </if>
-       </target>
-
-       <target name="set-mono-2.0-framework-configuration">
-               <property name="current.build.framework" value="mono-2.0" />
-               <property name="current.build.framework.name" value="Mono 2.0" 
/>
-               <property name="current.build.defines" 
value="${build.defines}MONO,MONO_2_0" dynamic="true" />
-               <property name="current.build.framework.sign" value="true" />
-               <property name="link.sdkdoc.version" value="SDK_v1_1" />
-               <property name="link.sdkdoc.web" value="true" />
-               <if test="${framework::exists(current.build.framework)}">
-                       <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
-               </if>
-       </target>
-
-       <!-- 
============================================================================================
 -->
-       <!--     C O M P I L E    T A R G E T S                                 
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <target name="compile-all" description="Compile all build 
configurations for all runtime configurations">
-               <echo message="Compiling all build configurations for all 
runtime configurations." />
-               <foreach item="String" in="${build.framework.strings}" 
delim="," property="current.build.framework">
-                       <foreach item="String" in="${build.config.strings}" 
delim="," property="current.build.config">
-                               <call target="compile-target" />
-                       </foreach>
-               </foreach>
-       </target>
-
-       <target name="compile-target" depends="init, download-vendor, 
conditional-compile" />
-
-       <target name="conditional-compile" depends="init" unless="${build.skip 
or compile.skip}"
-                       description="Conditionaly compiles all the modules if 
build framework and type are supported">
-               <call target="compile" />
-       </target>
-
-       <target name="compile" description="Compile everything">
-               <call target="compile-main" cascade="false" />
-               <call target="compile-test" cascade="false" />
-       </target>
-
-       <target name="compile-main" depends="init" description="Build the main 
library">
-               <echo message="Building the ${project.name} library" />
-               <property name="assemblyinfo.filename" 
value="src/main/csharp/CommonAssemblyInfo.cs" />
-               <call target="generate-assemblyinfo" />
-
-               <csc if="${current.build.keysign}" keyfile="${snk.file}" 
target="library"
-                               define="${current.build.defines}" 
warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
-                               output="${build.bin.dir}/${project.name}.dll" 
doc="${build.bin.dir}/${project.name}.xml">
-                       <nowarn>
-                               <warning number="1591" /> <!-- do not report 
warnings for missing XML comments -->
-                       </nowarn>
-                       <sources failonempty="true">
-                               <include name="src/main/csharp/**.cs" />
-                       </sources>
-                       <references refid="dependencies" />
-               </csc>
-               <csc if="${not current.build.keysign}" target="library"
-                               define="${current.build.defines}" 
warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
-                               output="${build.bin.dir}/${project.name}.dll" 
doc="${build.bin.dir}/${project.name}.xml">
-                       <nowarn>
-                               <warning number="1591" /> <!-- do not report 
warnings for missing XML comments -->
-                       </nowarn>
-                       <sources failonempty="true">
-                               <include name="src/main/csharp/**.cs" />
-                       </sources>
-                       <references refid="dependencies" />
-               </csc>
-               <call target="copy-content" />
-       </target>
-
-       <!-- Compile the nms-test module -->
-       <target name="compile-test" depends="compile-main" description="Build 
the test library">
-               <echo message="Building the ${project.name}.Test library" />
-               <property name="assemblyinfo.filename" 
value="src/test/csharp/CommonAssemblyInfo.cs" />
-               <call target="generate-assemblyinfo" />
-
-               <csc if="${current.build.keysign}" keyfile="${snk.file}" 
target="library"
-                               define="${current.build.defines}" 
warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
-                               
output="${build.bin.dir}/${project.name}.Test.dll" 
doc="${build.bin.dir}/${project.name}.Test.xml">
-                       <nowarn>
-                               <warning number="1591" /> <!-- do not report 
warnings for missing XML comments -->
-                       </nowarn>
-                       <sources failonempty="true">
-                               <include name="src/test/csharp/**.cs" />
-                       </sources>
-                       <references refid="test.dependencies" />
-               </csc>
-               <csc if="${not current.build.keysign}" target="library"
-                               define="${current.build.defines}" 
warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}"
-                               
output="${build.bin.dir}/${project.name}.Test.dll" 
doc="${build.bin.dir}/${project.name}.Test.xml">
-                       <nowarn>
-                               <warning number="1591" /> <!-- do not report 
warnings for missing XML comments -->
-                       </nowarn>
-                       <sources failonempty="true">
-                               <include name="src/test/csharp/**.cs" />
-                       </sources>
-                       <references refid="test.dependencies" />
-               </csc>
-               <call target="copy-content" />
-       </target>
-
-       <target name="copy-content">
-               <foreach item="File" property="content.filename">
-                       <in>
-                               <items refid="content.filenames" />
-                       </in>
-                       <do>
-                               <copy todir="${build.bin.dir}" 
file="${content.filename}" if="${not file::up-to-date(content.filename, 
'${build.bin.dir}/${content.filename}')}" />
-                       </do>
-               </foreach>
-       </target>
-
-       <!-- 
============================================================================================
 -->
-       <!--      I N S T A L L     T A R G E T S                               
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <target name="install-all" description="Install all build 
configurations for all runtime configurations">
-               <echo message="Installing all build configurations for all 
runtime configurations." />
-               <foreach item="String" in="${build.framework.strings}" 
delim="," property="current.build.framework">
-                       <foreach item="String" in="${build.config.strings}" 
delim="," property="current.build.config">
-                               <call target="install" />
-                       </foreach>
-               </foreach>
-       </target>
-
-       <!-- Install the modules to the local repo -->
-       <target name="install" depends="init, compile-target, 
conditional-install"
-                       description="Install the artifacts into the nant repo" 
/>
-
-       <target name="conditional-install" unless="${build.skip}"
-                       description="Install the artifacts into the nant repo">
-               <property name="path" 
value="${project.group}/${project.name}/${project.version.full}/${current.build.framework}/${current.build.config}"
 />
-               <foreach item="File" property="install.filename">
-                       <in>
-                               <items refid="install.filenames" />
-                       </in>
-                       <do>
-                               <property name="repo.task.artifact" 
value="${path}/${path::get-file-name(install.filename)}" />
-                               <property name="repo.task.src" 
value="${install.filename}" />
-                               <property name="repo.task.dest" 
value="${nant.local.repo}/${repo.task.artifact}" />
-                               <mkdir 
dir="${directory::get-parent-directory(repo.task.dest)}" />
-                               <copy file="${repo.task.src}" 
tofile="${repo.task.dest}" />
-                       </do>
-               </foreach>
-       </target>
-
-       <!-- 
============================================================================================
 -->
-       <!--      R E P O    D O W N L O A D     T A R G E T S                  
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <target name="download-vendor-all" description="Download vendor files 
for all runtime configurations">
-               <echo message="Downloading vendor files for all runtime 
configurations." />
-               <property name="current.build.config" value="release" />
-               <foreach item="String" in="${build.framework.strings}" 
delim="," property="current.build.framework">
-                       <call target="download-vendor" />
-               </foreach>
-       </target>
-
-       <target name="download-vendor" depends="vendor-init, 
conditional-download"
-                               description="Download the vendor artifacts from 
the nant repo" />
-
-       <target name="conditional-download" unless="${build.skip}"
-                               description="Download the artifacts from the 
nant repo">
-               <!-- Iterate over the defined vendor filesets. -->
-               <foreach item="String" in="${vendor.fileset.names}" delim="," 
property="current.vendor">
-                       <property name="vendor.name" 
value="${property::get-value(current.vendor + '.name')}" />
-                       <property name="vendor.group" 
value="${property::get-value(current.vendor + '.group')}" />
-                       <property name="vendor.version" 
value="${property::get-value(current.vendor + '.version')}" />
-                       <property name="vendor.filenames" 
value="${property::get-value(current.vendor + '.filenames')}" />
-                       <property name="local.repo.vendor.path" 
value="${nant.local.repo}/${vendor.group}/${vendor.name}/${vendor.version}/${current.build.framework}/${current.build.config}"
 />
-                       <property name="lib.path" 
value="lib/${vendor.name}/${current.build.framework}" />
-                       <!--
-                       Update the LIB folder with the latest version of the 
file.  If there is a newer version
-                       installed in the local repository, then that version 
will be copied into the LIB folder.
-                       -->
-                       <foreach item="String" in="${vendor.filenames}" 
delim="," property="repo.task.artifact">
-                               <property name="lib.task.dest" 
value="${lib.path}/${repo.task.artifact}" />
-                               <mkdir 
dir="${directory::get-parent-directory(lib.task.dest)}" />
-                               <property name="repo.task.src" 
value="${local.repo.vendor.path}/${repo.task.artifact}" />
-                               <copy file="${repo.task.src}" 
tofile="${lib.task.dest}" if="${file::exists(repo.task.src)}" />
-                               <if test="${not file::exists(lib.task.dest)}">
-                                       <echo message="Required dependent 
assembly ${repo.task.artifact} from ${vendor.name} for 
${current.build.framework.name} is not available. Build skipped." />
-                                       <property name="build.skip" 
value="true" />
-                               </if>
-                       </foreach>
-               </foreach>
-       </target>
-
-       <!-- 
============================================================================================
 -->
-       <!--      T E S T     T A R G E T S                                     
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <target name="test" depends="test-debug" description="Alias test target 
to test-debug" />
-
-       <target name="test-all" depends="test-debug, test-release" 
description="Test all build configurations for all runtime configurations" />
-
-       <target name="test-debug" depends="" description="Test debug build 
configurations for all runtime configurations">
-               <property name="current.build.config" value="debug" />
-               <call target="test-frameworks" />
-       </target>
-
-       <target name="test-release" depends="" description="Test release build 
configurations for all runtime configurations">
-               <property name="current.build.config" value="release" />
-               <call target="test-frameworks" />
-       </target>
-
-       <target name="test-frameworks">
-               <foreach item="String" in="${build.framework.strings}" 
delim="," property="current.build.framework">
-                       <call target="init" />
-                       <if test="${not build.skip}">
-                               <exec program="nunit-console" 
failonerror="true" 
workingdir="build/${current.build.framework}/${current.build.config}">
-                                       <arg value="${NUnit.Projectfile}" />
-                                       <arg value="-labels" />
-                                       <arg value="-xml=Nunit.TestOutput.xml" 
/>
-                               </exec>
-                       </if>
-               </foreach>
-       </target>
-
-       <!-- 
============================================================================================
 -->
-       <!--      M I S C E L L A N E O U S    T A R G E T S                    
                          -->
-       <!-- 
============================================================================================
 -->
-
-       <target name="build" depends="default" description="Build the project." 
/>
-
-       <target name="rebuild" depends="clean,build" description="Rebuild the 
project." />
-
-       <target name="clean" description="Deletes build">
-               <if test="${target::exists('clean-init')}">
-                       <call target="clean-init" />
-               </if>
-               <delete dir="build" if="${directory::exists('build')}" />
-               <delete dir="obj" if="${directory::exists('obj')}" />
-               <delete dir="package" if="${directory::exists('package')}" />
-       </target>
-
-       <target name="doc" depends="build">
-               <mkdir dir="${doc.dir}" />
-               <ndoc failonerror="false">
-                       <assemblies basedir="${build.bin.dir}">
-                               <include name="${project.name}.dll" />
-                       </assemblies>
-                       <summaries basedir="${basedir}/src/main/ndoc">
-                               <include name="NamespaceSummary.xml" />
-                       </summaries>
-                       <documenters>
-                               <documenter name="MSDN">
-                                       <property name="OutputDirectory" 
value="${doc.dir}" />
-                                       <property name="HtmlHelpName" 
value="${project.name}" />
-                                       <property 
name="HtmlHelpCompilerFilename" value="hhc.exe" />
-                                       <property name="IncludeFavorites" 
value="False" />
-                                       <property name="Title" 
value="${project.short_description}" />
-                                       <property name="SplitTOCs" 
value="False" />
-                                       <property name="DefaulTOC" value="" />
-                                       <!--
-                                       <property name="ShowVisualBasic" 
value="True" />
-                                       <property name="ShowMissingSummaries" 
value="True" />
-                                       <property name="ShowMissingRemarks" 
value="True" />
-                                       <property name="ShowMissingParams" 
value="True" />
-                                       <property name="ShowMissingReturns" 
value="True" />
-                                       <property name="ShowMissingValues" 
value="True" />
-                                       -->
-                                       <property name="DocumentInternals" 
value="False" />
-                                       <property name="DocumentProtected" 
value="True" />
-                                       <property name="DocumentPrivates" 
value="False" />
-                                       <property 
name="DocumentEmptyNamespaces" value="False" />
-                                       <property name="IncludeAssemblyVersion" 
value="True" />
-                                       <property name="CopyrightText" value="" 
/>
-                                       <property name="CopyrightHref" value="" 
/>
-                               </documenter>
-                       </documenters>
-               </ndoc>
-       </target>
-
-       <target name="sandcastle" depends="set-release-configuration, init, 
conditional-compile">
-               <!-- Directories -->
-               <property name="sandcastle.style" value="vs2005" 
unless="${property::exists('sandcastle.style')}" />
-               <property name="documentation.dir" value="${build.bin.dir}" />
-               <property name="bin.intern.dir" value="${build.bin.dir}" />
-               <property name="bin.extern.dir" 
value="${basedir}\vendor\NUnit\net-2.0" />
-               <property name="sandcastle.dir" 
value="${environment::get-variable('DXROOT')}" />
-               <property name="sandcastle.workingdir" 
value="${build.dir}\doc\${sandcastle.style}" />
-               <property name="sandcastle.output.dir" 
value="${sandcastle.workingdir}\Output" />
-
-               <!-- Executables -->
-               <property name="sandcastle.mrefbuilder.exe" 
value="${sandcastle.dir}\productiontools\mrefbuilder.exe" />
-               <property name="sandcastle.buildassembler.exe" 
value="${sandcastle.dir}\productiontools\buildassembler.exe" />
-               <property name="sandcastle.xsltransform.exe" 
value="${sandcastle.dir}\productiontools\xsltransform.exe" />
-               <property name="sandcastle.productiontransforms.dir" 
value="${sandcastle.dir}\ProductionTransforms" />
-
-               <!-- Create or Cleanup Working Directory -->
-               <mkdir dir="${sandcastle.workingdir}"
-                               if="${not 
directory::exists(sandcastle.workingdir)}" />
-               <delete>
-                       <fileset basedir="${sandcastle.workingdir}">
-                               <include name="**\*" />
-                       </fileset>
-               </delete>
-
-               <!-- Copy configuration file, and hard code references -->
-               <copy 
file="${sandcastle.dir}/Presentation/${sandcastle.style}/Configuration/Sandcastle.config"
-                               
tofile="${sandcastle.workingdir}/Sandcastle.config">
-                       <filterchain>
-                               <replacestring from="&quot;..\..\" 
to="&quot;${sandcastle.dir}\" />
-                               <replacestring from="&quot;..\" 
to="&quot;${sandcastle.dir}\Examples\" />
-                               <replacestring from="&quot;.\comments.xml" 
to="&quot;${documentation.dir}\${project.name}.xml" />
-                               <replacestring 
from="&quot;%DXROOT%\Presentation\${sandcastle.style}\content\feedback_content.xml&quot;"
 to="&quot;${basedir}/src/main/sandcastle/feedback_content.xml&quot;" />
-                       </filterchain>
-               </copy>
-
-               <!-- Run MRefBuilder (introspection on assemblies) to create 
basic Reflection XML -->
-               <exec program="${sandcastle.mrefbuilder.exe}" 
workingdir="${sandcastle.workingdir}">
-                       <arg value="${bin.intern.dir}/${project.name}.dll" />
-                       <arg value="/out:reflection.int.xml" />
-                       <arg value="/dep:${bin.extern.dir}\*.dll" />
-               </exec>
-
-               <!-- Create Reflection XML -->
-               <exec program="${sandcastle.xsltransform.exe}" 
workingdir="${sandcastle.workingdir}">
-                       <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyVSDocModel.xsl&quot;"
 if="${sandcastle.style != 'prototype'}" />
-                       <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyPrototypeDocModel.xsl&quot;"
 if="${sandcastle.style == 'prototype'}" />
-                       <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddFriendlyFilenames.xsl&quot;"
 /> <!-- if="${sandcastle.style != 'prototype'}" /> -->
-                       <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddGuidFilenames.xsl&quot;"
 if="${sandcastle.style == 'disabled'}" />
-                       <arg value="reflection.int.xml" />
-                       <arg value="/out:reflection.xml" />
-                       <arg value="/arg:IncludeAllMembersTopic=true" />
-                       <arg value="/arg:IncludeInheritedOverloadTopics=true" />
-               </exec>
-
-               <!-- Create Manifest (list of Topics) -->
-               <exec program="${sandcastle.xsltransform.exe}" 
workingdir="${sandcastle.workingdir}">
-                       <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ReflectionToManifest.xsl&quot;"
 />
-                       <arg value="reflection.xml" />
-                       <arg value="/out:manifest.xml" />
-               </exec>
-
-               <!-- Create Output Environment -->
-               <mkdir dir="${sandcastle.output.dir}" />
-               <mkdir dir="${sandcastle.output.dir}/html" />
-               <copy todir="${sandcastle.output.dir}">
-                       <fileset 
basedir="${sandcastle.dir}/Presentation/${sandcastle.style}">
-                               <include name="icons/*" />
-                               <include name="media/*" />
-                               <include name="scripts/*" />
-                               <include name="styles/*" />
-                       </fileset>
-               </copy>
-
-               <!-- Run BuildAssembler (create html topic files) -->
-               <exec program="${sandcastle.buildassembler.exe}" 
workingdir="${sandcastle.workingdir}">
-                       <arg value="/config:Sandcastle.config" />
-                       <arg value="manifest.xml" />
-               </exec>
-       </target>
-
-       <target name="sandcastle-all" description="Generate all formats of the 
Sandcastle documentation files.">
-               <foreach item="String" in="vs2005,prototype,hana" delim="," 
property="sandcastle.style">
-                       <call target="sandcastle" />
-               </foreach>
-       </target>
+    <!-- 
============================================================================================
 -->
+    <!--    P R O P E R T Y    D E F I N I T I O N S                           
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <!-- global project settings -->
+    <property name="project.cls.compliant"   value="true" 
unless="${property::exists('project.cls.compliant')}" />
+    <property name="project.release.type"    value="SNAPSHOT" 
unless="${property::exists('project.release.type')}" />
+    <property name="project.version.full"    value="${project.version + 
if(project.release.type == 'snapshot', '-' + project.release.type, '')}" 
dynamic="true" />
+    <property name="project.startyear"       value="2005" />
+    <property name="build.dir"               value="${basedir}/build" />
+    <property name="doc.dir"                 value="${build.dir}/doc" />
+    <property name="lib.dir"                 value="${path::combine(basedir, 
'lib')}" dynamic="true" />
+    <property name="lib.family.dir"          value="${path::combine(lib.dir, 
framework::get-family(framework::get-target-framework()))}" dynamic="true" />
+    <property name="lib.framework.dir"       
value="${path::combine(lib.family.dir, 
version::to-string(framework::get-version(framework::get-target-framework())))}"
 dynamic="true" />
+    <property name="package.dir"             value="${basedir}/package" />
+    <property name="src.package.name"        value="${project.name + '-' + 
project.version + if(project.release.type == 'SNAPSHOT', '-' + 
project.release.type, '') + '-src.zip'}" />
+    <property name="bin.package.name"        value="${project.name + '-' + 
project.version + if(project.release.type == 'SNAPSHOT', '-' + 
project.release.type, '') + '-bin.zip'}" />
+
+    <!-- default configuration -->
+    <property name="build.defines"           value="" />
+    <property name="build.noskip"            value="false" />
+    <property name="build.skip"              value="false" />
+    <property name="build.skip.release"      value="false" 
unless="${property::exists('build.skip.release')}" />
+    <property name="compile.skip"            value="false" 
unless="${property::exists('compile.skip')}" />
+    <property name="current.build.config"    value="${if(project.release.type 
== 'release', 'release', 'debug')}" overwrite="false" />
+    <property name="current.build.framework" 
value="${framework::get-target-framework()}" overwrite="false" />
+    <property name="current.build.defines"   value="${build.defines}" />
+    <property name="build.framework.strings" 
value="net-2.0,net-3.5,mono-2.0,netcf-2.0,netcf-3.5" 
unless="${property::exists('build.framework.strings')}"/>
+    <property name="current.build.framework.assembly.dir" 
value="${framework::get-assembly-directory(framework::get-target-framework())}" 
dynamic="true" />
+
+    <property name="build.config.strings"    
value="${if(property::exists('configuration'), configuration, 
if(build.skip.release == 'true', 'debug', 'debug,release'))}" dynamic="true" />
+
+    <!-- Figure out the user's HOME directory -->
+    <property name="user.home" value="${environment::get-variable('HOME')}"
+            if="${environment::variable-exists('HOME') and 
platform::is-unix()}"
+            unless="${property::exists('user.home')}" />
+    <property name="user.home" 
value="${environment::get-variable('USERPROFILE')}"
+            if="${environment::variable-exists('USERPROFILE') and 
platform::is-windows()}"
+            unless="${property::exists('user.home')}" />
+    <fail message="The HOME environment variable is not defined.  Please set 
it to your home directory."
+            unless="${property::exists('user.home')}" 
if="${platform::is-unix()}" />
+    <fail message="The USERPROFILE environment variable is not defined.  
Please set it to your home directory."
+            unless="${property::exists('user.home')}" 
if="${platform::is-windows()}" />
+
+    <!-- Figure out the NANT repositories -->
+    <property name="nant.remote.repo" 
value="${environment::get-variable('NANT_REMOTE_REPO')}"
+            if="${environment::variable-exists('NANT_REMOTE_REPO')}"
+            unless="${property::exists('nant.remote.repo')}" />
+    <property name="nant.local.repo" 
value="${environment::get-variable('NANT_REPO')}/local"
+            if="${environment::variable-exists('NANT_REPO')}"
+            unless="${property::exists('nant.local.repo')}" />
+    <property name="nant.local.repo" 
value="${user.home}/.nant/repository/local"
+            unless="${property::exists('nant.local.repo')}" />
+
+    <!-- Figure out the keyfile location -->
+    <property name="snk.file" 
value="${environment::get-variable('ACTIVEMQ_DOTNET_SNK')}"
+            if="${environment::variable-exists('ACTIVEMQ_DOTNET_SNK')}"
+            unless="${property::exists('snk.file')}" />
+    <property name="snk.file" value="${basedir}/keyfile/NMSKey.snk"
+            if="${not property::exists('snk.file')}" />
+
+    <!-- 
============================================================================================
 -->
+    <!--      I N I T I A L I Z A T I O N     T A R G E T S                    
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <target name="init" description="Initializes build properties">
+        <!-- enabled the release or debug configuration -->
+        <call target="set-${current.build.config}-configuration" />
+
+        <!-- Check to see if our build setup for the target framework -->
+        <if 
test="${not(target::exists('set-'+current.build.framework+'-framework-configuration'))}">
+            <fail message="The '${current.build.framework}' framework is not 
supported by this version of ActiveMQ .NET" />
+        </if>
+        <call target="set-${current.build.framework}-framework-configuration" 
/>
+
+        <!-- Check to see current platform supports the target framework -->
+        <if test="${framework::exists(current.build.framework)}">
+            <property name="build.skip" value="false" />
+        </if>
+        <if test="${not framework::exists(current.build.framework)}">
+            <if test="${build.noskip}">
+                <fail message="${current.build.framework.name} is not 
available." />
+            </if>
+            <if test="${not(build.noskip)}">
+                <echo message="${current.build.framework.name} is not 
available. Build skipped." />
+                <property name="build.skip" value="true" />
+            </if>
+        </if>
+
+        <!-- Check to see if we should skip this build framework. -->
+        <if test="${not(build.skip)}">
+            <if 
test="${property::exists('build.'+current.build.framework+'.skip')}">
+                <property name="build.skip" value="true" />
+                <echo message="The '${current.build.framework}' framework is 
not supported by this version of ActiveMQ .NET" />
+            </if>
+        </if>
+
+        <property name="current.build.keysign" 
value="${current.build.framework.sign}" />
+        <property name="build.bin.dir" 
value="${build.dir}/${nant.settings.currentframework}/${current.build.config}" 
/>
+        <if test="${not(build.skip)}">
+            <echo message="Doing ${if(current.build.keysign,'a signed','an 
unsigned')} ${current.build.config} build for the 
${current.build.framework.name} framework" />
+            <mkdir dir="${build.bin.dir}" />
+        </if>
+        <call target="dependency-init" />
+    </target>
+
+    <!-- Generate four-digit build number -->
+    <target name="generate-build-number">
+        <if test="${not property::exists('project.version.numeric')}">
+            <script language="C#">
+                <imports>
+                    <import namespace="System.Globalization" />
+                    <import namespace="System.Threading" />
+                </imports>
+                <code>
+                    <!-- Format for assembly revision is the number of days 
from the year the project 'started', property project.startyear.  -->
+                    <![CDATA[
+                        public static void ScriptMain(Project project)
+                        {
+                            int startYear = 
Convert.ToInt32(project.Properties["project.startyear"]);
+                            DateTime start = new DateTime(startYear, 1, 1);
+                            TimeSpan ts = DateTime.Now - start;
+                            project.Properties["project.version.numeric"] = 
project.Properties["project.version"].ToString() + "." + ts.Days.ToString();
+                        }
+                    ]]>
+                </code>
+            </script>
+        </if>
+    </target>
+
+    <!-- Generate assemblyinfo.cs files -->
+    <target name="generate-assemblyinfo" depends="generate-build-number" 
description="Generate the assembly info for the path in assemblyinfo.filename">
+        <asminfo output="${assemblyinfo.filename}" language="CSharp">
+            <imports>
+                <import namespace="System" />
+                <import namespace="System.Reflection" />
+                <import namespace="System.Runtime.InteropServices" />
+            </imports>
+            <attributes>
+                <attribute type="ComVisibleAttribute" value="false" />
+                <attribute type="CLSCompliantAttribute" 
value="${project.cls.compliant}" />
+                <attribute type="AssemblyTitleAttribute" 
value="${project.short_description}" />
+                <attribute type="AssemblyDescriptionAttribute" 
value="${project.description}" />
+                <attribute type="AssemblyConfigurationAttribute" 
value="${project.release.type}" />
+                <attribute type="AssemblyCompanyAttribute" 
value="http://activemq.apache.org/nms"; />
+                <attribute type="AssemblyProductAttribute" 
value="${project.short_description}" />
+                <attribute type="AssemblyCopyrightAttribute" value="Copyright 
(C) ${project.startyear}-${datetime::get-year(datetime::now())} Apache Software 
Foundation" />
+                <attribute type="AssemblyTrademarkAttribute" value="" />
+                <attribute type="AssemblyCultureAttribute" value="" />
+                <attribute type="AssemblyVersionAttribute" 
value="${project.version.numeric}" />
+                <attribute type="AssemblyInformationalVersionAttribute" 
value="${project.version}" />
+            </attributes>
+        </asminfo>
+    </target>
+
+    <!-- 
============================================================================================
 -->
+    <!--    C O N F I G U R A T I O N     T A R G E T S                        
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <target name="set-noskip-configuration" description="Disable skipping 
builds">
+        <property name="project.noskip" value="true" />
+    </target>
+
+    <target name="set-debug-configuration" description="Enabled 'debug' 
builds">
+        <property name="current.build.config" value="debug" />
+        <property name="current.build.config.debug" value="true" />
+        <property name="current.build.config.release" value="false" />
+        <property name="current.build.defines" 
value="${build.defines}DEBUG,TRACE," dynamic="true" />
+        <property name="csc.debug" value="Full" />
+        <property name="csc.optimize" value="false" />
+    </target>
+
+    <target name="set-release-configuration" description="Enabled 'release' 
builds">
+        <property name="current.build.config" value="release" />
+        <property name="current.build.config.release" value="true" />
+        <property name="current.build.config.debug" value="false" />
+        <property name="csc.debug" value="Full" />
+        <property name="csc.optimize" value="true" />
+    </target>
+
+    <target name="set-net-2.0-framework-configuration">
+        <property name="current.build.framework" value="net-2.0" />
+        <property name="current.build.framework.name" value=".NET 2.0" />
+        <property name="current.build.defines" 
value="${build.defines}NET,NET_2_0" dynamic="true" />
+        <property name="current.build.framework.sign" value="true" />
+        <property name="link.sdkdoc.version" value="SDK_v2_0" />
+        <property name="link.sdkdoc.web" value="true" />
+        <if test="${framework::exists(current.build.framework)}">
+            <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
+        </if>
+    </target>
+
+    <target name="set-net-3.5-framework-configuration">
+        <property name="current.build.framework" value="net-3.5" />
+        <property name="current.build.framework.name" value=".NET 3.5" />
+        <property name="current.build.defines" 
value="${build.defines}NET,NET_2_0,NET_3_5" dynamic="true" />
+        <property name="current.build.framework.sign" value="true" />
+        <property name="link.sdkdoc.version" value="SDK_v6_1" />
+        <property name="link.sdkdoc.web" value="true" />
+        <if test="${framework::exists(current.build.framework)}">
+            <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
+        </if>
+    </target>
+
+    <target name="set-netcf-2.0-framework-configuration">
+        <property name="current.build.framework" value="netcf-2.0" />
+        <property name="current.build.framework.name" value=".NET Compact 
Framework 2.0" />
+        <property name="current.build.defines" 
value="${build.defines}PocketPC,NETCF,NETCF_2_0" dynamic="true" />
+        <property name="current.build.framework.sign" value="true" />
+        <property name="link.sdkdoc.version" value="SDK_v1_1" />
+        <property name="link.sdkdoc.web" value="true" />
+        <if test="${framework::exists(current.build.framework)}">
+            <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
+        </if>
+    </target>
+
+    <target name="set-netcf-3.5-framework-configuration">
+        <property name="current.build.framework" value="netcf-3.5" />
+        <property name="current.build.framework.name" value=".NET Compact 
Framework 3.5" />
+        <property name="current.build.defines" 
value="${build.defines}PocketPC,NETCF,NETCF_3_5" dynamic="true" />
+        <property name="current.build.framework.sign" value="true" />
+        <property name="link.sdkdoc.version" value="SDK_v3_5" />
+        <property name="link.sdkdoc.web" value="true" />
+        <if test="${framework::exists(current.build.framework)}">
+            <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
+        </if>
+    </target>
+
+    <target name="set-mono-2.0-framework-configuration">
+        <property name="current.build.framework" value="mono-2.0" />
+        <property name="current.build.framework.name" value="Mono 2.0" />
+        <property name="current.build.defines" 
value="${build.defines}MONO,MONO_2_0" dynamic="true" />
+        <property name="current.build.framework.sign" value="true" />
+        <property name="link.sdkdoc.version" value="SDK_v1_1" />
+        <property name="link.sdkdoc.web" value="true" />
+        <if test="${framework::exists(current.build.framework)}">
+            <property name="nant.settings.currentframework" 
value="${current.build.framework}" />
+        </if>
+    </target>
+
+    <!-- 
============================================================================================
 -->
+    <!--     C O M P I L E    T A R G E T S                                    
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <target name="compile-all" description="Compile all build configurations 
for all runtime configurations">
+        <echo message="Compiling all build configurations for all runtime 
configurations." />
+        <foreach item="String" in="${build.framework.strings}" delim="," 
property="current.build.framework">
+            <foreach item="String" in="${build.config.strings}" delim="," 
property="current.build.config">
+                <call target="compile-target" />
+            </foreach>
+        </foreach>
+    </target>
+
+    <target name="compile-target" depends="init, download-vendor, 
conditional-compile" />
+
+    <target name="conditional-compile" depends="init" unless="${build.skip or 
compile.skip}"
+            description="Conditionaly compiles all the modules if build 
framework and type are supported">
+        <call target="compile" />
+    </target>
+
+    <target name="compile" description="Compile everything">
+        <call target="compile-main" cascade="false" />
+        <call target="compile-test" cascade="false" />
+    </target>
+
+    <target name="compile-main" depends="init" description="Build the main 
library">
+        <echo message="Building the ${project.name} library" />
+        <property name="assemblyinfo.filename" 
value="src/main/csharp/CommonAssemblyInfo.cs" />
+        <call target="generate-assemblyinfo" />
+
+        <csc if="${current.build.keysign}" keyfile="${snk.file}" 
target="library"
+                define="${current.build.defines}" warnaserror="false" 
debug="${csc.debug}" optimize="${csc.optimize}"
+                output="${build.bin.dir}/${project.name}.dll" 
doc="${build.bin.dir}/${project.name}.xml">
+            <nowarn>
+                <warning number="1591" /> <!-- do not report warnings for 
missing XML comments -->
+            </nowarn>
+            <sources failonempty="true">
+                <include name="src/main/csharp/**.cs" />
+            </sources>
+            <references refid="dependencies" />
+        </csc>
+        <csc if="${not current.build.keysign}" target="library"
+                define="${current.build.defines}" warnaserror="false" 
debug="${csc.debug}" optimize="${csc.optimize}"
+                output="${build.bin.dir}/${project.name}.dll" 
doc="${build.bin.dir}/${project.name}.xml">
+            <nowarn>
+                <warning number="1591" /> <!-- do not report warnings for 
missing XML comments -->
+            </nowarn>
+            <sources failonempty="true">
+                <include name="src/main/csharp/**.cs" />
+            </sources>
+            <references refid="dependencies" />
+        </csc>
+        <call target="copy-content" />
+    </target>
+
+    <!-- Compile the nms-test module -->
+    <target name="compile-test" depends="compile-main" description="Build the 
test library">
+        <echo message="Building the ${project.name}.Test library" />
+        <property name="assemblyinfo.filename" 
value="src/test/csharp/CommonAssemblyInfo.cs" />
+        <call target="generate-assemblyinfo" />
+
+        <csc if="${current.build.keysign}" keyfile="${snk.file}" 
target="library"
+                define="${current.build.defines}" warnaserror="false" 
debug="${csc.debug}" optimize="${csc.optimize}"
+                output="${build.bin.dir}/${project.name}.Test.dll" 
doc="${build.bin.dir}/${project.name}.Test.xml">
+            <nowarn>
+                <warning number="1591" /> <!-- do not report warnings for 
missing XML comments -->
+            </nowarn>
+            <sources failonempty="true">
+                <include name="src/test/csharp/**.cs" />
+            </sources>
+            <references refid="test.dependencies" />
+        </csc>
+        <csc if="${not current.build.keysign}" target="library"
+                define="${current.build.defines}" warnaserror="false" 
debug="${csc.debug}" optimize="${csc.optimize}"
+                output="${build.bin.dir}/${project.name}.Test.dll" 
doc="${build.bin.dir}/${project.name}.Test.xml">
+            <nowarn>
+                <warning number="1591" /> <!-- do not report warnings for 
missing XML comments -->
+            </nowarn>
+            <sources failonempty="true">
+                <include name="src/test/csharp/**.cs" />
+            </sources>
+            <references refid="test.dependencies" />
+        </csc>
+        <call target="copy-content" />
+    </target>
+
+    <target name="copy-content">
+        <foreach item="File" property="content.filename">
+            <in>
+                <items refid="content.filenames" />
+            </in>
+            <do>
+                <copy todir="${build.bin.dir}" file="${content.filename}" 
if="${not file::up-to-date(content.filename, 
'${build.bin.dir}/${content.filename}')}" />
+            </do>
+        </foreach>
+    </target>
+
+    <!-- 
============================================================================================
 -->
+    <!--      I N S T A L L     T A R G E T S                                  
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <target name="install-all" description="Install all build configurations 
for all runtime configurations">
+        <echo message="Installing all build configurations for all runtime 
configurations." />
+        <foreach item="String" in="${build.framework.strings}" delim="," 
property="current.build.framework">
+            <foreach item="String" in="${build.config.strings}" delim="," 
property="current.build.config">
+                <call target="install" />
+            </foreach>
+        </foreach>
+    </target>
+
+    <!-- Install the modules to the local repo -->
+    <target name="install" depends="init, compile-target, conditional-install"
+            description="Install the artifacts into the nant repo" />
+
+    <target name="conditional-install" unless="${build.skip}"
+            description="Install the artifacts into the nant repo">
+        <property name="path" 
value="${project.group}/${project.name}/${project.version.full}/${current.build.framework}/${current.build.config}"
 />
+        <foreach item="File" property="install.filename">
+            <in>
+                <items refid="install.filenames" />
+            </in>
+            <do>
+                <property name="repo.task.artifact" 
value="${path}/${path::get-file-name(install.filename)}" />
+                <property name="repo.task.src" value="${install.filename}" />
+                <property name="repo.task.dest" 
value="${nant.local.repo}/${repo.task.artifact}" />
+                <mkdir 
dir="${directory::get-parent-directory(repo.task.dest)}" />
+                <copy file="${repo.task.src}" tofile="${repo.task.dest}" />
+            </do>
+        </foreach>
+    </target>
+
+    <!-- 
============================================================================================
 -->
+    <!--      R E P O    D O W N L O A D     T A R G E T S                     
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <target name="download-vendor-all" description="Download vendor files for 
all runtime configurations">
+        <echo message="Downloading vendor files for all runtime 
configurations." />
+        <property name="current.build.config" value="release" />
+        <foreach item="String" in="${build.framework.strings}" delim="," 
property="current.build.framework">
+            <call target="download-vendor" />
+        </foreach>
+    </target>
+
+    <target name="download-vendor" depends="vendor-init, conditional-download"
+                description="Download the vendor artifacts from the nant repo" 
/>
+
+    <target name="conditional-download" unless="${build.skip}"
+                description="Download the artifacts from the nant repo">
+        <!-- Iterate over the defined vendor filesets. -->
+        <foreach item="String" in="${vendor.fileset.names}" delim="," 
property="current.vendor">
+            <property name="vendor.name" 
value="${property::get-value(current.vendor + '.name')}" />
+            <property name="vendor.group" 
value="${property::get-value(current.vendor + '.group')}" />
+            <property name="vendor.version" 
value="${property::get-value(current.vendor + '.version')}" />
+            <property name="vendor.filenames" 
value="${property::get-value(current.vendor + '.filenames')}" />
+            <property name="local.repo.vendor.path" 
value="${nant.local.repo}/${vendor.group}/${vendor.name}/${vendor.version}/${current.build.framework}/${current.build.config}"
 />
+            <property name="lib.path" 
value="lib/${vendor.name}/${current.build.framework}" />
+            <!--
+            Update the LIB folder with the latest version of the file.  If 
there is a newer version
+            installed in the local repository, then that version will be 
copied into the LIB folder.
+            -->
+            <foreach item="String" in="${vendor.filenames}" delim="," 
property="repo.task.artifact">
+                <property name="lib.task.dest" 
value="${lib.path}/${repo.task.artifact}" />
+                <mkdir dir="${directory::get-parent-directory(lib.task.dest)}" 
/>
+                <property name="repo.task.src" 
value="${local.repo.vendor.path}/${repo.task.artifact}" />
+                <copy file="${repo.task.src}" tofile="${lib.task.dest}" 
if="${file::exists(repo.task.src)}" />
+                <if test="${not file::exists(lib.task.dest)}">
+                    <echo message="Required dependent assembly 
${repo.task.artifact} from ${vendor.name} for ${current.build.framework.name} 
is not available. Build skipped." />
+                    <property name="build.skip" value="true" />
+                </if>
+            </foreach>
+        </foreach>
+    </target>
+
+    <!-- 
============================================================================================
 -->
+    <!--      T E S T     T A R G E T S                                        
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <target name="test" depends="test-debug" description="Alias test target to 
test-debug" />
+
+    <target name="test-all" depends="test-debug, test-release" 
description="Test all build configurations for all runtime configurations" />
+
+    <target name="test-debug" depends="" description="Test debug build 
configurations for all runtime configurations">
+        <property name="current.build.config" value="debug" />
+        <call target="test-frameworks" />
+    </target>
+
+    <target name="test-release" depends="" description="Test release build 
configurations for all runtime configurations">
+        <property name="current.build.config" value="release" />
+        <call target="test-frameworks" />
+    </target>
+
+    <target name="test-frameworks">
+        <foreach item="String" in="${build.framework.strings}" delim="," 
property="current.build.framework">
+            <call target="init" />
+            <if test="${not build.skip}">
+                <exec program="nunit-console" failonerror="true" 
workingdir="build/${current.build.framework}/${current.build.config}">
+                    <arg value="${NUnit.Projectfile}" />
+                    <arg value="-labels" />
+                    <arg value="-xml=Nunit.TestOutput.xml" />
+                </exec>
+            </if>
+        </foreach>
+    </target>
+
+    <!-- 
============================================================================================
 -->
+    <!--      M I S C E L L A N E O U S    T A R G E T S                       
                       -->
+    <!-- 
============================================================================================
 -->
+
+    <target name="build" depends="default" description="Build the project." />
+
+    <target name="rebuild" depends="clean,build" description="Rebuild the 
project." />
+
+    <target name="clean" description="Deletes build">
+        <if test="${target::exists('clean-init')}">
+            <call target="clean-init" />
+        </if>
+        <delete dir="build" if="${directory::exists('build')}" />
+        <delete dir="obj" if="${directory::exists('obj')}" />
+        <delete dir="package" if="${directory::exists('package')}" />
+    </target>
+
+    <target name="package" description="Bundle the source and binary 
distributions.">
+        <mkdir dir="${package.dir}"
+                if="${not directory::exists(package.dir)}" />
+        <zip zipfile="${package.dir}/${bin.package.name}">
+            <fileset refid="bin.package.contents"/>
+        </zip>
+        <zip zipfile="${package.dir}/${src.package.name}">
+            <fileset refid="src.package.contents"/>
+        </zip>
+    </target>
+
+    <target name="doc" depends="build">
+        <mkdir dir="${doc.dir}" />
+        <ndoc failonerror="false">
+            <assemblies basedir="${build.bin.dir}">
+                <include name="${project.name}.dll" />
+            </assemblies>
+            <summaries basedir="${basedir}/src/main/ndoc">
+                <include name="NamespaceSummary.xml" />
+            </summaries>
+            <documenters>
+                <documenter name="MSDN">
+                    <property name="OutputDirectory" value="${doc.dir}" />
+                    <property name="HtmlHelpName" value="${project.name}" />
+                    <property name="HtmlHelpCompilerFilename" value="hhc.exe" 
/>
+                    <property name="IncludeFavorites" value="False" />
+                    <property name="Title" 
value="${project.short_description}" />
+                    <property name="SplitTOCs" value="False" />
+                    <property name="DefaulTOC" value="" />
+                    <!--
+                    <property name="ShowVisualBasic" value="True" />
+                    <property name="ShowMissingSummaries" value="True" />
+                    <property name="ShowMissingRemarks" value="True" />
+                    <property name="ShowMissingParams" value="True" />
+                    <property name="ShowMissingReturns" value="True" />
+                    <property name="ShowMissingValues" value="True" />
+                    -->
+                    <property name="DocumentInternals" value="False" />
+                    <property name="DocumentProtected" value="True" />
+                    <property name="DocumentPrivates" value="False" />
+                    <property name="DocumentEmptyNamespaces" value="False" />
+                    <property name="IncludeAssemblyVersion" value="True" />
+                    <property name="CopyrightText" value="" />
+                    <property name="CopyrightHref" value="" />
+                </documenter>
+            </documenters>
+        </ndoc>
+    </target>
+
+    <target name="sandcastle" depends="set-release-configuration, init, 
conditional-compile">
+        <!-- Directories -->
+        <property name="sandcastle.style" value="vs2005" 
unless="${property::exists('sandcastle.style')}" />
+        <property name="documentation.dir" value="${build.bin.dir}" />
+        <property name="bin.intern.dir" value="${build.bin.dir}" />
+        <property name="bin.extern.dir" 
value="${basedir}\vendor\NUnit\net-2.0" />
+        <property name="sandcastle.dir" 
value="${environment::get-variable('DXROOT')}" />
+        <property name="sandcastle.workingdir" 
value="${build.dir}\doc\${sandcastle.style}" />
+        <property name="sandcastle.output.dir" 
value="${sandcastle.workingdir}\Output" />
+
+        <!-- Executables -->
+        <property name="sandcastle.mrefbuilder.exe" 
value="${sandcastle.dir}\productiontools\mrefbuilder.exe" />
+        <property name="sandcastle.buildassembler.exe" 
value="${sandcastle.dir}\productiontools\buildassembler.exe" />
+        <property name="sandcastle.xsltransform.exe" 
value="${sandcastle.dir}\productiontools\xsltransform.exe" />
+        <property name="sandcastle.productiontransforms.dir" 
value="${sandcastle.dir}\ProductionTransforms" />
+
+        <!-- Create or Cleanup Working Directory -->
+        <mkdir dir="${sandcastle.workingdir}"
+                if="${not directory::exists(sandcastle.workingdir)}" />
+        <delete>
+            <fileset basedir="${sandcastle.workingdir}">
+                <include name="**\*" />
+            </fileset>
+        </delete>
+
+        <!-- Copy configuration file, and hard code references -->
+        <copy 
file="${sandcastle.dir}/Presentation/${sandcastle.style}/Configuration/Sandcastle.config"
+                tofile="${sandcastle.workingdir}/Sandcastle.config">
+            <filterchain>
+                <replacestring from="&quot;..\..\" 
to="&quot;${sandcastle.dir}\" />
+                <replacestring from="&quot;..\" 
to="&quot;${sandcastle.dir}\Examples\" />
+                <replacestring from="&quot;.\comments.xml" 
to="&quot;${documentation.dir}\${project.name}.xml" />
+                <replacestring 
from="&quot;%DXROOT%\Presentation\${sandcastle.style}\content\feedback_content.xml&quot;"
 to="&quot;${basedir}/src/main/sandcastle/feedback_content.xml&quot;" />
+            </filterchain>
+        </copy>
+
+        <!-- Run MRefBuilder (introspection on assemblies) to create basic 
Reflection XML -->
+        <exec program="${sandcastle.mrefbuilder.exe}" 
workingdir="${sandcastle.workingdir}">
+            <arg value="${bin.intern.dir}/${project.name}.dll" />
+            <arg value="/out:reflection.int.xml" />
+            <arg value="/dep:${bin.extern.dir}\*.dll" />
+        </exec>
+
+        <!-- Create Reflection XML -->
+        <exec program="${sandcastle.xsltransform.exe}" 
workingdir="${sandcastle.workingdir}">
+            <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyVSDocModel.xsl&quot;"
 if="${sandcastle.style != 'prototype'}" />
+            <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ApplyPrototypeDocModel.xsl&quot;"
 if="${sandcastle.style == 'prototype'}" />
+            <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddFriendlyFilenames.xsl&quot;"
 /> <!-- if="${sandcastle.style != 'prototype'}" /> -->
+            <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\AddGuidFilenames.xsl&quot;"
 if="${sandcastle.style == 'disabled'}" />
+            <arg value="reflection.int.xml" />
+            <arg value="/out:reflection.xml" />
+            <arg value="/arg:IncludeAllMembersTopic=true" />
+            <arg value="/arg:IncludeInheritedOverloadTopics=true" />
+        </exec>
+
+        <!-- Create Manifest (list of Topics) -->
+        <exec program="${sandcastle.xsltransform.exe}" 
workingdir="${sandcastle.workingdir}">
+            <arg 
value="/xsl:&quot;${sandcastle.productiontransforms.dir}\ReflectionToManifest.xsl&quot;"
 />
+            <arg value="reflection.xml" />
+            <arg value="/out:manifest.xml" />
+        </exec>
+
+        <!-- Create Output Environment -->
+        <mkdir dir="${sandcastle.output.dir}" />
+        <mkdir dir="${sandcastle.output.dir}/html" />
+        <copy todir="${sandcastle.output.dir}">
+            <fileset 
basedir="${sandcastle.dir}/Presentation/${sandcastle.style}">
+                <include name="icons/*" />
+                <include name="media/*" />
+                <include name="scripts/*" />
+                <include name="styles/*" />
+            </fileset>
+        </copy>
+
+        <!-- Run BuildAssembler (create html topic files) -->
+        <exec program="${sandcastle.buildassembler.exe}" 
workingdir="${sandcastle.workingdir}">
+            <arg value="/config:Sandcastle.config" />
+            <arg value="manifest.xml" />
+        </exec>
+    </target>
+
+    <target name="sandcastle-all" description="Generate all formats of the 
Sandcastle documentation files.">
+        <foreach item="String" in="vs2005,prototype,hana" delim="," 
property="sandcastle.style">
+            <call target="sandcastle" />
+        </foreach>
+    </target>
 </project>

http://git-wip-us.apache.org/repos/asf/activemq-nms-msmq/blob/ec8bc14f/trunk/nant.build
----------------------------------------------------------------------
diff --git a/trunk/nant.build b/trunk/nant.build
index 1d68e44..d9f247c 100644
--- a/trunk/nant.build
+++ b/trunk/nant.build
@@ -107,6 +107,30 @@
 
     <target name="default" depends="install-all" />
 
+    <zipfileset id="src.package.contents" basedir="${basedir}">
+        <include name="LICENSE.txt" />
+        <include name="NOTICE.txt" />
+        <include name="nant-common.xml" />
+        <include name="nant.build" />
+        <include name="nant.build" />
+        <include name="nmsprovider*.config" />
+        <include name="vs2008-*.csproj" />
+        <include name="vs2008-*.csproj" />
+        <include name="vs2008-*.sln" />
+        <include name="keyfile/*" />
+        <include name="src/**/*.cs" />
+        <exclude name="src/sandbox/**" />
+    </zipfileset>
+
+    <zipfileset id="bin.package.contents" basedir="${basedir}">
+        <include name="LICENSE.txt" />
+        <include name="NOTICE.txt" />
+        <include name="build/**/nmsprovider*" />
+        <include name="build/**/${project.name}*" />
+        <include name="lib/**/*" />
+        <exclude name="build/**/%temp%/**" />
+    </zipfileset>
+
     <!-- Load the common target definitions  -->
     <include buildfile="${basedir}/nant-common.xml" />
 </project>

Reply via email to