2
<project name="NUnit" default="help" basedir=".">
4
<!-- ***************************************************************** -->
5
<!-- This script has been tested with the NAnt 0.86 beta 1 release. -->
7
<!-- At least one of the supported runtimes and sdk must be installed. -->
8
<!-- In order to build the msi, WiX 2.0 and the WiX tasks for NAnt -->
9
<!-- are required. To run the test coverage target, NCover is -->
12
<!-- Currently, the .NET 1.0 builds of the GUI runner cannot be run -->
13
<!-- successfully. However, the .NET 1.1 builds may be run under 1.0. -->
14
<!-- ***************************************************************** -->
16
<!-- ***************************************************************** -->
17
<!-- ********* Common properties that control the build ************** -->
18
<!-- ***************************************************************** -->
20
<!-- Project name - used as a prefix for packages -->
21
<property name="project.name" value="NUnit"/>
23
<!-- NUnit Base Package Version - First three digits -->
24
<property name="base.package.version" value="2.5.9"/>
26
<!-- Nominal version used for install directory and program
27
files menu. Normally the same as the package version,
28
but may differ when we are in alpha or beta. -->
29
<property name="nominal.version" value="2.5.9" />
31
<!-- Determine todays build number -->
32
<property name="temp.now" value="${datetime::now()}"/>
33
<property name="temp.yr" value="${datetime::get-year(temp.now)-2000}"/>
34
<property name="temp.day" value="${string::pad-left(datetime::get-day-of-year(temp.now),3,'0')}"/>
35
<property name="package.build.number" value="${temp.yr}${temp.day}"/>
37
<!-- NUnit full package version -->
38
<property name="package.version" value="${base.package.version}.${package.build.number}"/>
40
<!-- Package Configuration (Release, Alpha, Beta, etc.) -->
41
<property name="package.configuration" value=""/>
43
<!-- Base name for packages - add suffix for Alpha, Beta, RC -->
44
<property name="package.name"
45
value="${project.name}-${package.version}"/>
47
<!-- Frameworks supported by this build script. The first
48
installed framework found is the default for builds.
49
The first .NET and Mono frameworks found are the
50
respective net and mono defaults. -->
51
<property name="supported.frameworks"
52
value="net-2.0,net-3.5,net-4.0,net-1.1,net-1.0,mono-2.0,mono-1.0"/>
54
<!-- Packages we normally create -->
55
<!--<property name="standard.packages" value="std,mono" />-->
56
<property name="standard.packages" value="std" />
58
<!-- Our standard package for general distribution -->
59
<property name="default.package.config" value="std" />
61
<!-- Options for runing the NUnit tests -->
62
<property name="nunit.options" value=""/>
64
<!-- Additional internal properties are set in the include file -->
65
<include buildfile="nunit.build.include"/>
67
<!-- ***************************************************************** -->
68
<!-- *** Default Help Target *** -->
69
<!-- ***************************************************************** -->
71
<target name="help" description="Displays additional help information">
73
This build file will build NUnitLite for any of the supported
74
runtime frameworks which are actually installed. To add or
75
support for a framework, edit this script
77
Running on the current system, the following runtime frameworks
78
are available for building and testing NUnit:
81
<foreach item="String" delim=","
82
property="framework" in="${installed.frameworks}">
83
<echo message=" ${string::pad-right(framework,15,' ')}${framework::get-description(framework)}"/>
86
<property name="default.net.target" value="(Not available)"/>
87
<property name="default.mono.target" value="(Not available)"/>
88
<property name="default.net.target" value="${default.net.runtime}"
89
if="${property::exists('default.net.runtime')}"/>
90
<property name="default.mono.target" value="${default.mono.runtime}"
91
if="${property::exists('default.mono.runtime')}"/>
94
The default build target is the ${default.runtime} debug config.
95
Generic runtime targets use the following defaults:
96
net ${default.net.target}
97
mono ${default.mono.target}
99
Note that targets that set the build configuration or runtime
100
to be used must come before action targets. For example:
102
nant net-1.1 release build
104
nant debug clean build
106
Use nant -projecthelp to see a full list of targets.
110
<!-- ***************************************************************** -->
111
<!-- *** Targets that set the build configuration *** -->
112
<!-- *** These must come before actions like build or test *** -->
113
<!-- ***************************************************************** -->
115
<target name="debug" depends="set-debug-build-config"
116
description="Set config to debug for commands that follow"/>
118
<target name="release" depends="set-release-build-config"
119
description="Set config to release for commands that follow"/>
121
<!-- ***************************************************************** -->
122
<!-- *** Targets that set the runtime configuration *** -->
123
<!-- *** These must come before actions like build or test *** -->
124
<!-- ***************************************************************** -->
126
<target name="net" depends="set-default-dot-net-runtime-config"
127
description="Set runtime to .NET 1.1 for commands that follow"/>
129
<target name="net-1.0" depends="set-net-1.0-runtime-config"
130
description="Set runtime to .NET 1.0 for commands that follow"/>
132
<target name="net-1.1" depends="set-net-1.1-runtime-config"
133
description="Set runtime to .NET 1.1 for commands that follow"/>
135
<target name="net-2.0" depends="set-net-2.0-runtime-config"
136
description="Set runtime to .NET 2.0 for commands that follow"/>
138
<target name="net-3.5" depends="set-net-3.5-runtime-config"
139
description="Set runtime to .NET 3.5 for commands that follow"/>
141
<target name="net-4.0" depends="set-net-4.0-runtime-config"
142
description="Set runtime to .NET 4.0 for commands that follow"/>
144
<target name="mono" depends="set-default-mono-runtime-config"
145
description="Set runtime to Mono 1.0 for commands that follow"/>
147
<target name="mono-1.0" depends="set-mono-1.0-runtime-config"
148
description="Set runtime to Mono 1.0 for commands that follow"/>
150
<target name="mono-2.0" depends="set-mono-2.0-runtime-config"
151
description="Set runtime to Mono 2.0 for commands that follow"/>
153
<!-- ***************************************************************** -->
154
<!-- *** Targets that clean directories *** -->
155
<!-- ***************************************************************** -->
157
<target name="clean" depends="set-build-dir"
158
description="Removes output created by the current build config">
160
<delete dir="${current.build.dir}"
161
if="${directory::exists( current.build.dir )}"/>
163
<delete file="src/GeneratedAssemblyInfo.cs"
164
if="${file::exists( 'src/GeneratedAssemblyInfo.cs' )}"/>
168
<target name="clean-all"
169
description="Removes output created by all build configs">
171
<delete dir="${project.build.dir}"
172
if="${directory::exists( project.build.dir )}"/>
174
<delete file="src/GeneratedAssemblyInfo.cs"
175
if="${file::exists( 'src/GeneratedAssemblyInfo.cs' )}"/>
179
<!-- Removes the current package working directory -->
180
<target name="clean-package-dir">
182
<delete dir="${package.working.dir}"
183
if="${directory::exists( package.working.dir )}"/>
187
<!-- ***************************************************************** -->
188
<!-- *** Targets that generate code *** -->
189
<!-- ***************************************************************** -->
191
<!-- Generate AssemblyInfo for this build -->
192
<target name="gen-assembly-info">
194
<asminfo output="src/GeneratedAssemblyInfo.cs" language="CSharp">
196
<import namespace="System.Reflection"/>
199
<attribute type="AssemblyCompanyAttribute" value="NUnit.org"/>
200
<attribute type="AssemblyProductAttribute" value="NUnit"/>
201
<attribute type="AssemblyCopyrightAttribute"
202
value="Copyright (C) 2002-2009 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved."/>
203
<attribute type="AssemblyTrademarkAttribute" value="NUnit is a trademark of NUnit.org"/>
204
<attribute type="AssemblyVersionAttribute" value="${package.version}"/>
205
<attribute type="AssemblyInformationalVersionAttribute" value="${package.version}"/>
206
<attribute type="AssemblyConfigurationAttribute" value="${package.configuration}"/>
212
<!-- Generate code for the fluent constraint builder interface -->
213
<target name="gen-syntax"
214
description="Generate code for the fluent constraint builder interface">
216
<exec program="GenSyntax.exe"
218
basedir="${project.tools.dir}/bin"
219
workingdir="${project.src.dir}/NUnitFramework/framework"
220
commandline="SyntaxElements.txt"/>
224
<!-- ***************************************************************** -->
225
<!-- *** Targets that perform builds *** -->
226
<!-- ***************************************************************** -->
228
<!-- Build NUnit for default runtime version and config -->
229
<target name="build" depends="make-build-dir,gen-assembly-info"
230
description="Build NUnit for default runtime version and config">
233
<echo message="* Starting ${runtime.config} ${build.config} build"/>
236
<!-- Copy key file to base directory, so second level files can access it -->
237
<copy file="${project.base.dir}/nunit.snk" todir="${project.build.dir}"/>-->
239
<!-- Copy lib files to current lib dir dir -->
240
<copy todir="${current.lib.dir}">
241
<fileset basedir="${project.lib.dir}">
242
<include name="*.dll"/>
246
<!-- Build NUnit components and tests -->
247
<nant target="build">
248
<buildfiles refid="project.buildfiles"/>
251
<!-- Build GUI if runtime is 2.0 or greater -->
252
<call target="build-gui" if="${build.gui}" />
254
<!-- Copy test project for this runtime framework -->
255
<copy file="${project.base.dir}/${runtime.testproj}"
256
tofile="${current.build.dir}/NUnitTests.nunit">
262
<!-- Copy other files for running tests -->
263
<copy todir="${current.build.dir}" flatten="true">
264
<fileset basedir="${project.base.dir}">
265
<include name="NUnitTests.config" />
266
<include name="NUnitFitTests.html" />
267
<include name="clr.bat" />
268
<include name="src/PNUnit/*.conf" />
269
<include name="src/PNUnit/runpnunit.bat" />
275
<!-- Build the Gui -->
276
<target name="build-gui">
278
<fail unless="${build.gui}"
279
message="Runtime 2.0 or greater is required to build the NUnit GUI" />
281
<nant target="build">
282
<buildfiles refid="gui.buildfiles"/>
287
<!-- Build current config for all available runtimes -->
288
<target name="build-all"
289
description="Build current config for all available runtimes">
291
<foreach item="String" delim=","
292
property="framework" in="${installed.frameworks}">
294
<call target="set-${framework}-runtime-config"/>
295
<call target="build"/>
301
<!-- ***************************************************************** -->
302
<!-- *** Targets for running tests *** -->
303
<!-- ***************************************************************** -->
305
<target name="test" depends="build,run-test"
306
description="Build and run tests for selected config and runtime"/>
308
<target name="run-test"
309
description="Run tests for selected config and runtime (no rebuild)">
312
<echo message="* Testing ${runtime.config} ${build.config} build"/>
313
<echo message="* Running under ${nant.settings.currentframework}"/>
316
<!-- We use exec rather than the nunit2 task because we are testing
317
a new build of NUnit which is likely not to be included in the Nant build -->
318
<!-- Mono currently has a SIGSEGV fault if we run in a single AppDomain -->
320
<property name="result.file"
321
value="TestResult-${nant.settings.currentframework}"/>
322
<exec basedir="${current.build.dir}"
323
workingdir="${current.build.dir}"
324
program="nunit-console.exe"
326
commandline="NUnitTests.nunit ${nunit.options} -xml:${result.file}.xml" />
330
<target name="test-coverage" depends="build"
331
description="Run tests for a build under NCover to get coverage results">
334
<echo message="* Starting ${runtime.config} ${build.config} test coverage run"/>
337
<property name="ncover.options"
338
value="//a nunit.framework;nunit.core;nunit.extensions;nunit.util;nunit.console;nunit.uikit;nunit-gui-runner"/>
340
<!-- We use exec rather than the nunit2 task because we are testing
341
a new build of NUnit which is likely not to be included in the Nant build -->
342
<exec basedir="${ncover.dir}"
343
workingdir="${current.build.dir}"
344
program="NCover.Console.exe"
346
commandline="nunit-console.exe NUnitTests.nunit ${nunit.options} ${ncover.options}"
347
if="${build.win32}" />
349
<!-- Mono currently has a SIGSEGV fault if we run in a single AppDomain -->
350
a new build of NUnit which is likely not to be included in the Nant build -->
351
<exec basedir="${ncover.dir}"
352
workingdir="${current.build.dir}"
353
program="NCover.Console.exe"
355
commandline="nunit-console.exe NUnitTests.nunit ${nunit.options}"
356
unless="${build.win32}" />
360
<target name="test-all"
361
description="Build and test all runtimes for current config">
363
<foreach item="String" delim=","
364
property="framework" in="${installed.frameworks}">
366
<call target="set-${framework}-runtime-config"/>
367
<call target="test" />
373
<target name="test-each-runtime" depends="build"
374
description="Run tests for the current build under each runtime">
376
<foreach item="String" delim=","
377
property="framework" in="${supported.test.platforms}">
379
<if test="${framework::exists( framework )}">
380
<property name="nant.settings.currentframework"
381
value="${framework}" />
382
<call target="run-test" failonerror="false" />
387
<property name="nant.settings.currentframework" value="${runtime.config}" />
390
<echo message="* Restored runtime to ${nant.settings.currentframework}" />
395
<target name="test-under-net-1.0">
396
<if test="${framework::exists('net-1.0')}">
397
<property name="nant.settings.currentframework" value="net-1.0"/>
398
<call target="run-test"/>
399
<property name="nant.settings.currentframework" value="${runtime.config}" />
403
<target name="test-all-under-each"
404
description="Build all runtimes and test the builds under each runtime.">
406
<call target="set-release-build-config"/>
408
<foreach item="String" delim=","
409
property="framework" in="${installed.frameworks}">
411
<call target="set-${framework}-runtime-config"/>
412
<call target="test-each-runtime" failonerror="false"/>
418
<target name="nunit2-test" depends="build"
419
description="Run tests for a build using the nunit2 task">
422
<echo message="* Starting ${runtime.config} ${build.config} test run"/>
426
<formatter type="Plain"/>
427
<test assemblyname="${current.build.dir}/nunit.framework.tests.dll"/>
431
<target name="timing-test" depends="build"
432
description="Run timing tests (long)">
435
<echo message="* Starting ${runtime.config} ${build.config} timing tests"/>
437
<echo message="* WARNING: Test may take some time to run"/>
440
<exec basedir="${current.build.dir}"
441
workingdir="${current.build.dir}"
442
program="nunit-console.exe"
443
commandline="timing-tests.dll"/>
447
<target name="gui-test" depends="build"
448
description="Run tests for a build using gui runner">
451
<echo message="* Starting ${runtime.config} ${build.config} gui test run"/>
454
<exec basedir="${current.build.dir}"
455
workingdir="${current.build.dir}"
458
commandline="NUnitTests.nunit -run"/>
462
<target name="fit-tests" depends="build"
463
description="Run Fit Acceptance tests on the build">
466
<echo message="* Starting ${runtime.config} ${build.config} Fit Tests"/>
469
<exec basedir="${current.build.dir}"
470
workingdir="${current.build.dir}"
471
program="runfile.exe"
473
commandline="NUnitFitTests.html TestResults.html ." />
478
<!-- ***************************************************************** -->
479
<!-- * Build the NUnit samples - not part of normal build *** -->
480
<!-- ***************************************************************** -->
482
<property name="samples.bin.dir"
483
value="${path::combine(project.samples.dir, 'bin')}"/>
485
<target name="clean-samples" description="Removes the samples build directory">
486
<delete dir="${samples.bin.dir}" />
489
<target name="build-samples" depends="build"
490
description="Build the NUnit samples">
492
<mkdir dir="${samples.bin.dir}" unless="${directory::exists(samples.bin.dir)}" />
494
<copy todir="${samples.bin.dir}"
495
file="${path::combine(current.framework.dir,'nunit.framework.dll')}" />
496
<copy todir="${samples.bin.dir}"
497
file="${path::combine(current.lib.dir,'nunit.core.interfaces.dll')}" />
498
<copy todir="${samples.bin.dir}"
499
file="${path::combine(current.lib.dir,'nunit.core.dll')}" />
501
<nant target="build">
502
<buildfiles refid="sample.buildfiles" />
507
<!-- ***************************************************************** -->
508
<!-- *** Targets for packaging the NUnit distribution *** -->
509
<!-- ***************************************************************** -->
511
<target name="package-all"
512
description="Create all the standard packages for distribution">
514
<call target="package-src"/>
516
<call target="package-docs"/>
518
<foreach item="String" delim=","
519
property="package.config" in="${standard.packages}">
521
<call target="set-package-config"/>
522
<call target="package"/>
528
<!-- ***************************************************************** -->
529
<!-- *** Package Binaries From Current Build *** -->
530
<!-- ***************************************************************** -->
532
<target name="package-build" depends="build"
533
description="Create a zip of the current build (not a full installation)">
535
<property name="zip.file.name"
536
value="${package.name}-${runtime.config}${build.suffix}"/>
539
zipfile="${project.package.dir}/${zip.file.name}.zip">
540
<fileset basedir="${current.build.dir}" prefix="${zip.file.name}">
547
<!-- ***************************************************************** -->
548
<!-- *** Package Using the Currently Selected Package Config *** -->
549
<!-- *** or the default package if none is selected *** -->
550
<!-- ***************************************************************** -->
552
<target name="package" depends="build-install-image"
553
description="Create a package using the current or default config">
555
<call target="create-zip"/>
556
<call target="create-msi" if="${create.msi}"/>
560
<!-- ***************************************************************** -->
561
<!-- *** Package as a zip *** -->
562
<!-- ***************************************************************** -->
564
<target name="package-zip"
565
depends="build-install-image,create-zip"
566
description="Create zip binary distribution package"/>
568
<!-- ***************************************************************** -->
569
<!-- *** Package as an msi *** -->
570
<!-- ***************************************************************** -->
572
<target name="package-msi" depends="build-install-image,create-msi"
573
description="Build standard msi file and deploy it to the package dir"/>
575
<!-- ***************************************************************** -->
576
<!-- *** Install the msi *** -->
577
<!-- ***************************************************************** -->
579
<target name="install-msi" description="Install msi file on system" >
580
<exec program="msiexec" workingdir="${project.package.dir}"
581
commandline="/i ${package.name}-${runtime.config}${build.suffix}.msi /passive" />
584
<!-- ***************************************************************** -->
585
<!-- *** Uninstall the msi *** -->
586
<!-- ***************************************************************** -->
588
<target name="remove-msi" description="Uninstall an msi" >
589
<exec program="msiexec" workingdir="${project.package.dir}"
590
commandline="/x ${package.name}-${runtime.config}${build.suffix}.msi /passive" />
593
<!-- ***************************************************************** -->
594
<!-- *** Create the zip *** -->
595
<!-- ***************************************************************** -->
597
<!-- Create zip from existing install image -->
598
<target name="create-zip">
599
<!-- Create the zip file -->
600
<property name="zip.file.name"
601
value="${package.name}-${package.config}${build.suffix}"
602
unless="${package.config==default.package.config}"/>
603
<property name="zip.file.name"
604
value="${package.name}${build.suffix}"
605
if="${package.config==default.package.config}"/>
608
zipfile="${project.package.dir}/${zip.file.name}.zip">
609
<fileset basedir="${package.working.dir}" prefix="${package.name}">
615
<!-- ***************************************************************** -->
616
<!-- *** Create the msi *** -->
617
<!-- ***************************************************************** -->
619
<!-- Create msi from existing install image -->
620
<target name="create-msi">
622
<fail message="MSI can only be built on the Win32 platform" unless="${platform::is-windows()}"/>
623
<fail message="MSI can only be built for a Win32 runtime" unless="${build.win32}"/>
625
<property name="wix.dir"
626
value="${project.tools.dir}/wix"/>
627
<property name="work.dir"
628
value="${package.working.dir}"/>
629
<property name="install.dir"
630
value="${project.base.dir}/install"/>
632
<property name="build.suffix" value=""
633
unless="${property::exists('build.suffix')}" />
634
<property name="msi.file.name"
635
value="${package.name}-${package.config}${build.suffix}.msi"
636
unless="${package.config==default.package.config}"/>
637
<property name="msi.file.name"
638
value="${package.name}${build.suffix}.msi"
639
if="${package.config==default.package.config}"/>
642
<candle out="${work.dir}/" exedir="${wix.dir}">
644
<define name="ProductVersion" value="${package.version}" />
645
<define name="NominalVersion" value="${nominal.version}" />
646
<define name="InstallImage" value="package\NUnit-${package.version}" />
648
<sources basedir="${install.dir}">
649
<include name="bin.wxs" />
650
<include name="nunit-gui.wxs" />
651
<include name="doc.wxs" />
652
<include name="tests.wxs" />
653
<include name="samples.wxs" />
654
<include name="pnunit.wxs" />
655
<include name="NUnit.wxs" />
659
<light exedir="${wix.dir}"
660
out="${project.package.dir}/${msi.file.name}"
661
locfile="${wix.dir}/WixUI_en-us.wxl">
663
<include name="${work.dir}/NUnit.wixobj" />
664
<include name="${work.dir}/bin.wixobj" />
665
<include name="${work.dir}/nunit-gui.wixobj" />
666
<include name="${work.dir}/doc.wixobj" />
667
<include name="${work.dir}/samples.wixobj" />
668
<include name="${work.dir}/tests.wixobj" />
669
<include name="${work.dir}/pnunit.wixobj" />
670
<include name="${wix.dir}/wixui.wixlib" />
676
<!-- ***************************************************************** -->
677
<!-- *** Package source files *** -->
678
<!-- ***************************************************************** -->
680
<target name="package-src" depends="clean-package-dir"
681
description="Create full source package for developer use">
683
<call target="copy-docs"/>
684
<call target="copy-samples"/>
685
<call target="copy-src"/>
686
<call target="copy-tools" />
688
<copy file="license.txt" todir="${package.working.dir}" />
690
<!-- Create the zip file -->
692
zipfile="${project.package.dir}/${package.name}-src.zip">
693
<fileset basedir="${package.working.dir}" prefix="${package.name}">
699
<!-- ***************************************************************** -->
700
<!-- *** Package docs *** -->
701
<!-- ***************************************************************** -->
703
<target name="package-docs" depends="clean-package-dir"
704
description="Create a zip of the docs only">
706
<call target="copy-docs"/>
708
<!-- Create the zip file -->
710
zipfile="${project.package.dir}/${package.name}-docs.zip">
711
<fileset basedir="${package.working.dir}" prefix="${package.name}">
718
<!-- ***************************************************************** -->
719
<!-- *** Package resources *** -->
720
<!-- ***************************************************************** -->
722
<target name="package-resources" depends="clean-package-dir"
723
description="Package resources for localization - currently not working">
725
<copy todir="${package.resource.dir}/nunit-gui-runner">
726
<fileset basedir="GuiRunner/nunit-gui/obj/Release">
727
<include name="*.resources"/>
731
<copy todir="${package.resource.dir}/nunit.uikit">
732
<fileset basedir="GuiComponents/UiKit/obj/Release">
733
<include name="NUnit.UiKit.AddConfigurationDialog.resources"/>
734
<include name="NUnit.UiKit.AssemblyPathDialog.resources"/>
735
<include name="NUnit.UiKit.ConfigurationEditor.resources"/>
736
<include name="NUnit.UiKit.RenameConfigurationDialog.resources"/>
737
<include name="NUnit.UiKit.TestPropertiesDialog.resources"/>
738
<include name="NUnit.UiKit.TestTree.resources"/>
742
<copy todir="${package.working.dir}">
743
<fileset basedir="${project.tools.dir}/localization">
744
<include name="*.*"/>
748
<if test="${property::exists('localize')}">
749
<foreach property="culture" item="String" delim=","
751
<foreach property="folder" item="Folder"
752
in="${package.working.dir}/resources">
753
<property name="proj"
754
value="${path::get-file-name(folder)}"/>
755
<property name="projdir"
756
value="${package.working.dir}/${culture}/${proj}"/>
757
<foreach property="file" item="File" in="${folder}">
758
<property name="filename"
759
value="${path::get-file-name-without-extension(file)}"/>
761
tofile="${projdir}/${filename}.${culture}.resources"/>"
768
zipfile="${project.package.dir}/${package.name}-resources.zip">
769
<fileset basedir="${package.working.dir}" prefix="${package.name}">
776
<!-- ***************************************************************** -->
777
<!-- *** Helper targets used for packaging *** -->
778
<!-- ***************************************************************** -->
780
<!-- ***************************************************************** -->
781
<!-- *** Build install image for a package *** -->
782
<!-- ***************************************************************** -->
784
<!-- Create an install image for use by a package -->
785
<target name="build-install-image" depends="clean-package-dir">
787
<call target="copy-top-level-files" />
789
<foreach item="String" delim="+"
790
property="runtime" in="${package.runtimes}">
792
<if test="${framework::exists( runtime )}">
793
<if test="${framework::sdk-exists( runtime )}">
794
<call target="set-${runtime}-runtime-config"/>
795
<call target="copy-bins" />
800
<call target="copy-docs" />
801
<call target="copy-samples" />
805
<target name="copy-top-level-files">
807
<copy file="license.txt" todir="${package.working.dir}" />
808
<copy file="${project.tools.dir}/fit/license.txt"
809
tofile="${package.working.dir}/fit-license.txt" />
810
<copy file="${project.src.dir}/GuiRunner/nunit-gui/Logo.ico"
811
todir="${package.working.dir}" />
812
<copy file="NUnitFitTests.html"
813
todir="${package.working.dir}" />
817
<!-- ***************************************************************** -->
818
<!-- *** Copy a set of binaries for a package *** -->
819
<!-- ***************************************************************** -->
821
<target name="copy-bins" depends="build">
823
<mkdir dir="${package.bin.dir}"/>
824
<copy todir="${package.bin.dir}/${runtime.config}">
825
<fileset basedir="${current.build.dir}">
827
<include name="lib/*"/>
828
<include name="tests/*"/>
829
<include name="framework/*"/>
830
<exclude name="*.wixobj"/>
831
<exclude name="nunit-server.*"/>
832
<exclude name="nunit-test-server.*"/>
838
<!-- ***************************************************************** -->
839
<!-- *** Copy the documentation for a package *** -->
840
<!-- ***************************************************************** -->
842
<target name="copy-docs">
843
<mkdir dir="${package.doc.dir}"/>
844
<copy todir="${package.doc.dir}">
845
<fileset basedir="${project.doc.dir}">
846
<include name="*.html"/>
847
<include name="nunit.css"/>
848
<include name="codeFuncs.js"/>
849
<include name="favicon.ico"/>
850
<include name="files/*"/>
851
<include name="img/*"/>
852
<exclude name="img/thumbs.db"/>
857
<!-- ***************************************************************** -->
858
<!-- *** Copy sample programs for a package *** -->
859
<!-- ***************************************************************** -->
861
<target name="copy-samples">
863
<mkdir dir="${package.samples.dir}"/>
865
<!-- Copy files that are not part of an individual project -->
866
<copy todir="${package.samples.dir}">
867
<fileset basedir="${project.samples.dir}">
868
<include name="ReadMe.txt" />
869
<include name="samples.common" />
870
<include name="csharp/CSharp.sln" />
871
<include name="jsharp/jsharp.sln" />
872
<include name="vb/vb-samples.sln" />
873
<include name="cpp/managed/managed-cpp.sln" />
874
<include name="cpp/cpp-cli/cpp-cli.sln" />
875
<include name="Extensibility/Core/CoreExtensibility.sln" />
876
<include name="Extensibility/Core/Install.bat" />
880
<!-- Copy each project's files -->
881
<nant target="package">
882
<buildfiles refid="sample.buildfiles" failonerror="true" />
888
<!-- ***************************************************************** -->
889
<!-- *** Copy the source code for a package *** -->
890
<!-- ***************************************************************** -->
892
<target name="copy-src">
893
<delete dir="${package.src.dir}" />
894
<mkdir dir="${package.src.dir}"/>
896
<!-- Copy project top level files -->
897
<copy todir="${package.working.dir}">
898
<fileset basedir="${project.base.dir}">
899
<include name="license.rtf"/>
900
<include name="nunit.build"/>
901
<include name="nunit.build.include"/>
902
<include name="nunit.sln"/>
903
<include name="nunit.snk"/>
904
<include name="NUnitFitTests.html"/>
905
<include name="NUnitTests.nunit"/>
906
<include name="NUnitTests.config"/>
907
<include name="NUnitTests.v1.nunit"/>
908
<include name="NUnitTests.v2.nunit"/>
912
<!-- Copy src dir files -->
913
<copy todir="${package.src.dir}">
914
<fileset basedir="${project.src.dir}">
915
<include name="nunit.snk"/>
916
<include name="CommonAssemblyInfo.cs"/>
917
<include name="nunit20under21.config"/>
918
<include name="nunit20under22.config"/>
919
<include name="nunit21under22.config"/>
920
<include name="PNUnit/*.conf"/>
921
<include name="PNUnit/runpnunit.bat"/>
925
<!-- Copy lib dir files -->
926
<copy todir="${package.lib.dir}">
927
<fileset basedir="${project.lib.dir}">
928
<include name="*.dll"/>
932
<!-- Copy install directory files -->
933
<copy todir="${package.install.dir}">
934
<fileset basedir="${project.install.dir}">
935
<include name="bin.wxs" />
936
<include name="nunit-gui.wxs" />
937
<include name="doc.wxs" />
938
<include name="tests.wxs" />
939
<include name="samples.wxs" />
940
<include name="NUnit.wxs"/>
944
<!-- Copy individual projects -->
945
<nant target="package" inheritrefs="true">
946
<buildfiles refid="project.buildfiles" />
949
<nant target="package" inheritrefs="true">
950
<buildfiles refid="gui.buildfiles" />
955
<!-- ***************************************************************** -->
956
<!-- *** Copy the tools for a package *** -->
957
<!-- ***************************************************************** -->
959
<target name="copy-tools">
961
<mkdir dir="${package.tools.dir}" />
963
<copy todir="${package.tools.dir}">
964
<fileset basedir="${project.tools.dir}">
965
<include name="fit/fit.dll"/>
966
<include name="fit/runFile.exe"/>
967
<include name="fit/runFile.exe.config"/>
968
<include name="fit/license.txt"/>
969
<include name="bin/GenSyntax.exe"/>
970
<include name="src/Gensyntax/GenSyntax.build"/>
971
<include name="src/Gensyntax/GenSyntax.csproj"/>
972
<include name="src/Gensyntax/GenSyntax.sln"/>
973
<include name="src/Gensyntax/App.ico"/>
974
<include name="src/GenSyntax/*.cs"/>
975
<include name="src/Gensyntax/Templates/*.cs"/>
981
<!-- ***************************************************************** -->
982
<!-- *** Targets for installing the NUnit distribution *** -->
983
<!-- ***************************************************************** -->
985
<target name="install" depends="build-install-image"
986
description="Install NUnit directly from the build">
990
<!-- ***************************************************************** -->
991
<!-- *** Targets for building custom tools used in the build *** -->
993
<!-- *** NOTE: Tools are not built automatically. If you are *** -->
994
<!-- *** building from source and don't have binaries for *** -->
995
<!-- *** NUnit-specific tools, you can run this target. *** -->
996
<!-- ***************************************************************** -->
998
<target name="clean-tools"
999
description="Remove binaries of tools used to build NUnit (DANGEROUS!)">
1001
<nant target="clean" buildfile="tools/src/GenSyntax/GenSyntax.build"/>
1005
<target name="build-tools"
1006
description="Build tools used in building NUnit">
1008
<nant target="build" buildfile="tools/src/GenSyntax/GenSyntax.build"/>
1012
<!-- ***************************************************************** -->
1013
<!-- ****** Patternsets and Filesets Used by Various Targets ******** -->
1014
<!-- ***************************************************************** -->
1016
<fileset id="project.buildfiles" basedir="${project.src.dir}">
1019
<include name="NUnitFramework/framework/nunit.framework.build" />
1020
<include name="NUnitCore/interfaces/nunit.core.interfaces.build" />
1021
<include name="NUnitCore/core/nunit.core.build" />
1022
<include name="NUnitMocks/mocks/nunit.mocks.build" />
1023
<include name="ClientUtilities/util/nunit.util.build" />
1025
<!-- Console Runner -->
1026
<include name="ConsoleRunner/nunit-console/nunit-console.build" />
1027
<include name="ConsoleRunner/nunit-console-exe/nunit-console.exe.build" />
1029
<!-- Test Server -->
1030
<include name="NUnitTestServer/nunit-server-exe/nunit-server.exe.build" />
1031
<include name="NUnitTestServer/nunit-agent-exe/nunit-agent.exe.build" />
1034
<include name="PNUnit/pnunit.framework/pnunit.framework.build" />
1035
<include name="PNUnit/agent/pnunit-agent.build"/>
1036
<include name="PNUnit/launcher/pnunit-launcher.build"/>
1038
<!-- Test Utilities and Dummy Projects -->
1039
<include name="tests/mock-assembly/mock-assembly.build" />
1040
<include name="tests/nonamespace-assembly/nonamespace-assembly.build" />
1041
<include name="tests/test-assembly/test-assembly.build" />
1042
<include name="tests/test-utilities/test-utilities.build" />
1043
<include name="tests/loadtest-assembly/loadtest-assembly.build" />
1044
<include name="tests/timing-tests/timing-tests.build" />
1046
<!-- NUnit Base Tests -->
1047
<include name="NUnitFramework/tests/nunit.framework.tests.build" />
1048
<include name="NUnitCore/tests/nunit.core.tests.build" />
1049
<include name="NUnitMocks/tests/nunit.mocks.tests.build" />
1050
<include name="ClientUtilities/tests/nunit.util.tests.build" />
1052
<!-- Console Runner Tests -->
1053
<include name="ConsoleRunner/tests/nunit-console.tests.build" />
1055
<!-- PNUnit Tests -->
1056
<include name="PNUnit/tests/pnunit.tests.build"/>
1059
<include name="NUnitFixtures/fixtures/nunit.fixtures.build" />
1060
<include name="NUnitFixtures/tests/nunit.fixtures.tests.build" />
1064
<fileset id="gui.buildfiles" basedir="${project.src.dir}">
1067
<include name="GuiException/UiException/nunit.uiexception.build" />
1068
<include name="GuiComponents/UiKit/nunit.uikit.build" />
1069
<include name="GuiRunner/nunit-gui/nunit-gui.build" />
1070
<include name="GuiRunner/nunit-gui-exe/nunit-gui.exe.build" />
1073
<include name="GuiException/tests/nunit.uiexception.tests.build" />
1074
<include name="GuiComponents/tests/nunit.uikit.tests.build" />
1075
<include name="GuiRunner/tests/nunit-gui.tests.build" />
1079
<!-- BuildFiles for Samples -->
1080
<!-- Note: For each sample, sample.buildfile includes sample.build.
1081
The distribution includes sample.build, but not sample.buildfile,
1082
because the latter is used by NUnit for packaging. -->
1083
<fileset id="sample.buildfiles" basedir="${project.samples.dir}">
1085
<!-- CSharp Samples -->
1086
<include name="csharp/failures/cs-failures.build" />
1087
<include name="csharp/money/cs-money.build" />
1088
<include name="csharp/syntax/cs-syntax.build" />
1090
<!-- JSharp Samples -->
1091
<include name="jsharp/failures/jsharp-failures.build"
1092
if="${task::exists('vjc') and platform::is-windows()}" />
1095
<include name="vb/failures/vb-failures.build"
1096
if="${task::exists('vbc') and platform::is-windows()}" />
1097
<include name="vb/money/vb-money.build"
1098
if="${task::exists('vbc') and platform::is-windows()}" />
1099
<include name="vb/syntax/vb-syntax.build"
1100
if="${task::exists('vbc') and platform::is-windows()}" />
1102
<!-- Managed C++ Samples -->
1103
<include name="cpp/managed/failures/cpp-managed-failures.build"
1104
if="${platform::is-windows()}" />
1106
<!-- C++/CLI Samples -->
1107
<include name="cpp/cpp-cli/failures/cpp-cli-failures.build"
1108
if="${platform::is-windows()}" />
1109
<include name="cpp/cpp-cli/syntax/cpp-cli-syntax.build"
1110
if="${platform::is-windows()}" />
1112
<!-- Extensibility Samples -->
1113
<include name="Extensibility/Core/Minimal/Minimal.build" />
1114
<include name="Extensibility/Core/SampleFixtureExtension/SampleFixtureExtension.build" />
1115
<include name="Extensibility/Core/SampleSuiteExtension/SampleSuiteExtension.build" />
1118
<!-- Files to be copied to source directories -->
1119
<fileset id="source-files" >
1120
<include name="**/*.sln" />
1121
<include name="**/*.csproj" />
1122
<include name="**/*.config" />
1123
<include name="**/*.build" />
1124
<include name="**/*.cs" />
1125
<include name="**/*.xsd" />
1126
<include name="**/*.xslt" />
1127
<include name="**/*.resx" />
1128
<include name="**/*.jpg" />
1129
<include name="**/*.gif" />
1130
<include name="**/*.ico" />
1131
<include name="**/*.txt" />
1132
<include name="**/resources/*" />
1134
<exclude name="**/CVS/**" />
1135
<exclude name="**/bin/**" />
1136
<exclude name="**/obj/**" />
1137
<exclude name="**/Debug/**" />
1138
<exclude name="**/Release/**" />
2
<project name="NUnit" default="help" basedir=".">
4
<!-- ***************************************************************** -->
5
<!-- This script has been tested with the NAnt 0.86 beta 1 release. -->
7
<!-- At least one of the supported runtimes and sdk must be installed. -->
8
<!-- In order to build the msi, WiX 2.0 and the WiX tasks for NAnt -->
9
<!-- are required. To run the test coverage target, NCover is -->
12
<!-- Currently, the .NET 1.0 builds of the GUI runner cannot be run -->
13
<!-- successfully. However, the .NET 1.1 builds may be run under 1.0. -->
14
<!-- ***************************************************************** -->
16
<!-- ***************************************************************** -->
17
<!-- ********* Common properties that control the build ************** -->
18
<!-- ***************************************************************** -->
20
<!-- Project name - used as a prefix for packages -->
21
<property name="project.name" value="NUnit"/>
23
<!-- NUnit Base Package Version - First three digits -->
24
<property name="base.package.version" value="2.5.9"/>
26
<!-- Nominal version used for install directory and program
27
files menu. Normally the same as the package version,
28
but may differ when we are in alpha or beta. -->
29
<property name="nominal.version" value="2.5.9" />
31
<!-- Determine todays build number -->
32
<property name="temp.now" value="${datetime::now()}"/>
33
<property name="temp.yr" value="${datetime::get-year(temp.now)-2000}"/>
34
<property name="temp.day" value="${string::pad-left(datetime::get-day-of-year(temp.now),3,'0')}"/>
35
<property name="package.build.number" value="${temp.yr}${temp.day}"/>
37
<!-- NUnit full package version -->
38
<property name="package.version" value="${base.package.version}.${package.build.number}"/>
40
<!-- Package Configuration (Release, Alpha, Beta, etc.) -->
41
<property name="package.configuration" value=""/>
43
<!-- Base name for packages - add suffix for Alpha, Beta, RC -->
44
<property name="package.name"
45
value="${project.name}-${package.version}"/>
47
<!-- Frameworks supported by this build script. The first
48
installed framework found is the default for builds.
49
The first .NET and Mono frameworks found are the
50
respective net and mono defaults. -->
51
<property name="supported.frameworks"
52
value="net-2.0,net-3.5,net-4.0,net-1.1,net-1.0,mono-2.0,mono-1.0"/>
54
<!-- Packages we normally create -->
55
<!--<property name="standard.packages" value="std,mono" />-->
56
<property name="standard.packages" value="std" />
58
<!-- Our standard package for general distribution -->
59
<property name="default.package.config" value="std" />
61
<!-- Options for runing the NUnit tests -->
62
<property name="nunit.options" value=""/>
64
<!-- Additional internal properties are set in the include file -->
65
<include buildfile="nunit.build.include"/>
67
<!-- ***************************************************************** -->
68
<!-- *** Default Help Target *** -->
69
<!-- ***************************************************************** -->
71
<target name="help" description="Displays additional help information">
73
This build file will build NUnitLite for any of the supported
74
runtime frameworks which are actually installed. To add or
75
support for a framework, edit this script
77
Running on the current system, the following runtime frameworks
78
are available for building and testing NUnit:
81
<foreach item="String" delim=","
82
property="framework" in="${installed.frameworks}">
83
<echo message=" ${string::pad-right(framework,15,' ')}${framework::get-description(framework)}"/>
86
<property name="default.net.target" value="(Not available)"/>
87
<property name="default.mono.target" value="(Not available)"/>
88
<property name="default.net.target" value="${default.net.runtime}"
89
if="${property::exists('default.net.runtime')}"/>
90
<property name="default.mono.target" value="${default.mono.runtime}"
91
if="${property::exists('default.mono.runtime')}"/>
94
The default build target is the ${default.runtime} debug config.
95
Generic runtime targets use the following defaults:
96
net ${default.net.target}
97
mono ${default.mono.target}
99
Note that targets that set the build configuration or runtime
100
to be used must come before action targets. For example:
102
nant net-1.1 release build
104
nant debug clean build
106
Use nant -projecthelp to see a full list of targets.
110
<!-- ***************************************************************** -->
111
<!-- *** Targets that set the build configuration *** -->
112
<!-- *** These must come before actions like build or test *** -->
113
<!-- ***************************************************************** -->
115
<target name="debug" depends="set-debug-build-config"
116
description="Set config to debug for commands that follow"/>
118
<target name="release" depends="set-release-build-config"
119
description="Set config to release for commands that follow"/>
121
<!-- ***************************************************************** -->
122
<!-- *** Targets that set the runtime configuration *** -->
123
<!-- *** These must come before actions like build or test *** -->
124
<!-- ***************************************************************** -->
126
<target name="net" depends="set-default-dot-net-runtime-config"
127
description="Set runtime to .NET 1.1 for commands that follow"/>
129
<target name="net-1.0" depends="set-net-1.0-runtime-config"
130
description="Set runtime to .NET 1.0 for commands that follow"/>
132
<target name="net-1.1" depends="set-net-1.1-runtime-config"
133
description="Set runtime to .NET 1.1 for commands that follow"/>
135
<target name="net-2.0" depends="set-net-2.0-runtime-config"
136
description="Set runtime to .NET 2.0 for commands that follow"/>
138
<target name="net-3.5" depends="set-net-3.5-runtime-config"
139
description="Set runtime to .NET 3.5 for commands that follow"/>
141
<target name="net-4.0" depends="set-net-4.0-runtime-config"
142
description="Set runtime to .NET 4.0 for commands that follow"/>
144
<target name="mono" depends="set-default-mono-runtime-config"
145
description="Set runtime to Mono 1.0 for commands that follow"/>
147
<target name="mono-1.0" depends="set-mono-1.0-runtime-config"
148
description="Set runtime to Mono 1.0 for commands that follow"/>
150
<target name="mono-2.0" depends="set-mono-2.0-runtime-config"
151
description="Set runtime to Mono 2.0 for commands that follow"/>
153
<!-- ***************************************************************** -->
154
<!-- *** Targets that clean directories *** -->
155
<!-- ***************************************************************** -->
157
<target name="clean" depends="set-build-dir"
158
description="Removes output created by the current build config">
160
<delete dir="${current.build.dir}"
161
if="${directory::exists( current.build.dir )}"/>
163
<delete file="src/GeneratedAssemblyInfo.cs"
164
if="${file::exists( 'src/GeneratedAssemblyInfo.cs' )}"/>
168
<target name="clean-all"
169
description="Removes output created by all build configs">
171
<delete dir="${project.build.dir}"
172
if="${directory::exists( project.build.dir )}"/>
174
<delete file="src/GeneratedAssemblyInfo.cs"
175
if="${file::exists( 'src/GeneratedAssemblyInfo.cs' )}"/>
179
<!-- Removes the current package working directory -->
180
<target name="clean-package-dir">
182
<delete dir="${package.working.dir}"
183
if="${directory::exists( package.working.dir )}"/>
187
<!-- ***************************************************************** -->
188
<!-- *** Targets that generate code *** -->
189
<!-- ***************************************************************** -->
191
<!-- Generate AssemblyInfo for this build -->
192
<target name="gen-assembly-info">
194
<asminfo output="src/GeneratedAssemblyInfo.cs" language="CSharp">
196
<import namespace="System.Reflection"/>
199
<attribute type="AssemblyCompanyAttribute" value="NUnit.org"/>
200
<attribute type="AssemblyProductAttribute" value="NUnit"/>
201
<attribute type="AssemblyCopyrightAttribute"
202
value="Copyright (C) 2002-2009 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved."/>
203
<attribute type="AssemblyTrademarkAttribute" value="NUnit is a trademark of NUnit.org"/>
204
<attribute type="AssemblyVersionAttribute" value="${package.version}"/>
205
<attribute type="AssemblyInformationalVersionAttribute" value="${package.version}"/>
206
<attribute type="AssemblyConfigurationAttribute" value="${package.configuration}"/>
212
<!-- Generate code for the fluent constraint builder interface -->
213
<target name="gen-syntax"
214
description="Generate code for the fluent constraint builder interface">
216
<exec program="GenSyntax.exe"
218
basedir="${project.tools.dir}/bin"
219
workingdir="${project.src.dir}/NUnitFramework/framework"
220
commandline="SyntaxElements.txt"/>
224
<!-- ***************************************************************** -->
225
<!-- *** Targets that perform builds *** -->
226
<!-- ***************************************************************** -->
228
<!-- Build NUnit for default runtime version and config -->
229
<target name="build" depends="make-build-dir,gen-assembly-info"
230
description="Build NUnit for default runtime version and config">
233
<echo message="* Starting ${runtime.config} ${build.config} build"/>
236
<!-- Copy key file to base directory, so second level files can access it -->
237
<copy file="${project.base.dir}/nunit.snk" todir="${project.build.dir}"/>-->
239
<!-- Copy lib files to current lib dir dir -->
240
<copy todir="${current.lib.dir}">
241
<fileset basedir="${project.lib.dir}">
242
<include name="*.dll"/>
246
<!-- Build NUnit components and tests -->
247
<nant target="build">
248
<buildfiles refid="project.buildfiles"/>
251
<!-- Build GUI if runtime is 2.0 or greater -->
252
<call target="build-gui" if="${build.gui}" />
254
<!-- Copy test project for this runtime framework -->
255
<copy file="${project.base.dir}/${runtime.testproj}"
256
tofile="${current.build.dir}/NUnitTests.nunit">
262
<!-- Copy other files for running tests -->
263
<copy todir="${current.build.dir}" flatten="true">
264
<fileset basedir="${project.base.dir}">
265
<include name="NUnitTests.config" />
266
<include name="NUnitFitTests.html" />
267
<include name="clr.bat" />
268
<include name="src/PNUnit/*.conf" />
269
<include name="src/PNUnit/runpnunit.bat" />
275
<!-- Build the Gui -->
276
<target name="build-gui">
278
<fail unless="${build.gui}"
279
message="Runtime 2.0 or greater is required to build the NUnit GUI" />
281
<nant target="build">
282
<buildfiles refid="gui.buildfiles"/>
287
<!-- Build current config for all available runtimes -->
288
<target name="build-all"
289
description="Build current config for all available runtimes">
291
<foreach item="String" delim=","
292
property="framework" in="${installed.frameworks}">
294
<call target="set-${framework}-runtime-config"/>
295
<call target="build"/>
301
<!-- ***************************************************************** -->
302
<!-- *** Targets for running tests *** -->
303
<!-- ***************************************************************** -->
305
<target name="test" depends="build,run-test"
306
description="Build and run tests for selected config and runtime"/>
308
<target name="run-test"
309
description="Run tests for selected config and runtime (no rebuild)">
312
<echo message="* Testing ${runtime.config} ${build.config} build"/>
313
<echo message="* Running under ${nant.settings.currentframework}"/>
316
<!-- We use exec rather than the nunit2 task because we are testing
317
a new build of NUnit which is likely not to be included in the Nant build -->
318
<!-- Mono currently has a SIGSEGV fault if we run in a single AppDomain -->
320
<property name="result.file"
321
value="TestResult-${nant.settings.currentframework}"/>
322
<exec basedir="${current.build.dir}"
323
workingdir="${current.build.dir}"
324
program="nunit-console.exe"
326
commandline="NUnitTests.nunit ${nunit.options} -xml:${result.file}.xml" />
330
<target name="test-coverage" depends="build"
331
description="Run tests for a build under NCover to get coverage results">
334
<echo message="* Starting ${runtime.config} ${build.config} test coverage run"/>
337
<property name="ncover.options"
338
value="//a nunit.framework;nunit.core;nunit.extensions;nunit.util;nunit.console;nunit.uikit;nunit-gui-runner"/>
340
<!-- We use exec rather than the nunit2 task because we are testing
341
a new build of NUnit which is likely not to be included in the Nant build -->
342
<exec basedir="${ncover.dir}"
343
workingdir="${current.build.dir}"
344
program="NCover.Console.exe"
346
commandline="nunit-console.exe NUnitTests.nunit ${nunit.options} ${ncover.options}"
347
if="${build.win32}" />
349
<!-- Mono currently has a SIGSEGV fault if we run in a single AppDomain -->
350
a new build of NUnit which is likely not to be included in the Nant build -->
351
<exec basedir="${ncover.dir}"
352
workingdir="${current.build.dir}"
353
program="NCover.Console.exe"
355
commandline="nunit-console.exe NUnitTests.nunit ${nunit.options}"
356
unless="${build.win32}" />
360
<target name="test-all"
361
description="Build and test all runtimes for current config">
363
<foreach item="String" delim=","
364
property="framework" in="${installed.frameworks}">
366
<call target="set-${framework}-runtime-config"/>
367
<call target="test" />
373
<target name="test-each-runtime" depends="build"
374
description="Run tests for the current build under each runtime">
376
<foreach item="String" delim=","
377
property="framework" in="${supported.test.platforms}">
379
<if test="${framework::exists( framework )}">
380
<property name="nant.settings.currentframework"
381
value="${framework}" />
382
<call target="run-test" failonerror="false" />
387
<property name="nant.settings.currentframework" value="${runtime.config}" />
390
<echo message="* Restored runtime to ${nant.settings.currentframework}" />
395
<target name="test-under-net-1.0">
396
<if test="${framework::exists('net-1.0')}">
397
<property name="nant.settings.currentframework" value="net-1.0"/>
398
<call target="run-test"/>
399
<property name="nant.settings.currentframework" value="${runtime.config}" />
403
<target name="test-all-under-each"
404
description="Build all runtimes and test the builds under each runtime.">
406
<call target="set-release-build-config"/>
408
<foreach item="String" delim=","
409
property="framework" in="${installed.frameworks}">
411
<call target="set-${framework}-runtime-config"/>
412
<call target="test-each-runtime" failonerror="false"/>
418
<target name="nunit2-test" depends="build"
419
description="Run tests for a build using the nunit2 task">
422
<echo message="* Starting ${runtime.config} ${build.config} test run"/>
426
<formatter type="Plain"/>
427
<test assemblyname="${current.build.dir}/nunit.framework.tests.dll"/>
431
<target name="timing-test" depends="build"
432
description="Run timing tests (long)">
435
<echo message="* Starting ${runtime.config} ${build.config} timing tests"/>
437
<echo message="* WARNING: Test may take some time to run"/>
440
<exec basedir="${current.build.dir}"
441
workingdir="${current.build.dir}"
442
program="nunit-console.exe"
443
commandline="timing-tests.dll"/>
447
<target name="gui-test" depends="build"
448
description="Run tests for a build using gui runner">
451
<echo message="* Starting ${runtime.config} ${build.config} gui test run"/>
454
<exec basedir="${current.build.dir}"
455
workingdir="${current.build.dir}"
458
commandline="NUnitTests.nunit -run"/>
462
<target name="fit-tests" depends="build"
463
description="Run Fit Acceptance tests on the build">
466
<echo message="* Starting ${runtime.config} ${build.config} Fit Tests"/>
469
<exec basedir="${current.build.dir}"
470
workingdir="${current.build.dir}"
471
program="runfile.exe"
473
commandline="NUnitFitTests.html TestResults.html ." />
478
<!-- ***************************************************************** -->
479
<!-- * Build the NUnit samples - not part of normal build *** -->
480
<!-- ***************************************************************** -->
482
<property name="samples.bin.dir"
483
value="${path::combine(project.samples.dir, 'bin')}"/>
485
<target name="clean-samples" description="Removes the samples build directory">
486
<delete dir="${samples.bin.dir}" />
489
<target name="build-samples" depends="build"
490
description="Build the NUnit samples">
492
<mkdir dir="${samples.bin.dir}" unless="${directory::exists(samples.bin.dir)}" />
494
<copy todir="${samples.bin.dir}"
495
file="${path::combine(current.framework.dir,'nunit.framework.dll')}" />
496
<copy todir="${samples.bin.dir}"
497
file="${path::combine(current.lib.dir,'nunit.core.interfaces.dll')}" />
498
<copy todir="${samples.bin.dir}"
499
file="${path::combine(current.lib.dir,'nunit.core.dll')}" />
501
<nant target="build">
502
<buildfiles refid="sample.buildfiles" />
507
<!-- ***************************************************************** -->
508
<!-- *** Targets for packaging the NUnit distribution *** -->
509
<!-- ***************************************************************** -->
511
<target name="package-all"
512
description="Create all the standard packages for distribution">
514
<call target="package-src"/>
516
<call target="package-docs"/>
518
<foreach item="String" delim=","
519
property="package.config" in="${standard.packages}">
521
<call target="set-package-config"/>
522
<call target="package"/>
528
<!-- ***************************************************************** -->
529
<!-- *** Package Binaries From Current Build *** -->
530
<!-- ***************************************************************** -->
532
<target name="package-build" depends="build"
533
description="Create a zip of the current build (not a full installation)">
535
<property name="zip.file.name"
536
value="${package.name}-${runtime.config}${build.suffix}"/>
539
zipfile="${project.package.dir}/${zip.file.name}.zip">
540
<fileset basedir="${current.build.dir}" prefix="${zip.file.name}">
547
<!-- ***************************************************************** -->
548
<!-- *** Package Using the Currently Selected Package Config *** -->
549
<!-- *** or the default package if none is selected *** -->
550
<!-- ***************************************************************** -->
552
<target name="package" depends="build-install-image"
553
description="Create a package using the current or default config">
555
<call target="create-zip"/>
556
<call target="create-msi" if="${create.msi}"/>
560
<!-- ***************************************************************** -->
561
<!-- *** Package as a zip *** -->
562
<!-- ***************************************************************** -->
564
<target name="package-zip"
565
depends="build-install-image,create-zip"
566
description="Create zip binary distribution package"/>
568
<!-- ***************************************************************** -->
569
<!-- *** Package as an msi *** -->
570
<!-- ***************************************************************** -->
572
<target name="package-msi" depends="build-install-image,create-msi"
573
description="Build standard msi file and deploy it to the package dir"/>
575
<!-- ***************************************************************** -->
576
<!-- *** Install the msi *** -->
577
<!-- ***************************************************************** -->
579
<target name="install-msi" description="Install msi file on system" >
580
<exec program="msiexec" workingdir="${project.package.dir}"
581
commandline="/i ${package.name}-${runtime.config}${build.suffix}.msi /passive" />
584
<!-- ***************************************************************** -->
585
<!-- *** Uninstall the msi *** -->
586
<!-- ***************************************************************** -->
588
<target name="remove-msi" description="Uninstall an msi" >
589
<exec program="msiexec" workingdir="${project.package.dir}"
590
commandline="/x ${package.name}-${runtime.config}${build.suffix}.msi /passive" />
593
<!-- ***************************************************************** -->
594
<!-- *** Create the zip *** -->
595
<!-- ***************************************************************** -->
597
<!-- Create zip from existing install image -->
598
<target name="create-zip">
599
<!-- Create the zip file -->
600
<property name="zip.file.name"
601
value="${package.name}-${package.config}${build.suffix}"
602
unless="${package.config==default.package.config}"/>
603
<property name="zip.file.name"
604
value="${package.name}${build.suffix}"
605
if="${package.config==default.package.config}"/>
608
zipfile="${project.package.dir}/${zip.file.name}.zip">
609
<fileset basedir="${package.working.dir}" prefix="${package.name}">
615
<!-- ***************************************************************** -->
616
<!-- *** Create the msi *** -->
617
<!-- ***************************************************************** -->
619
<!-- Create msi from existing install image -->
620
<target name="create-msi">
622
<fail message="MSI can only be built on the Win32 platform" unless="${platform::is-windows()}"/>
623
<fail message="MSI can only be built for a Win32 runtime" unless="${build.win32}"/>
625
<property name="wix.dir"
626
value="${project.tools.dir}/wix"/>
627
<property name="work.dir"
628
value="${package.working.dir}"/>
629
<property name="install.dir"
630
value="${project.base.dir}/install"/>
632
<property name="build.suffix" value=""
633
unless="${property::exists('build.suffix')}" />
634
<property name="msi.file.name"
635
value="${package.name}-${package.config}${build.suffix}.msi"
636
unless="${package.config==default.package.config}"/>
637
<property name="msi.file.name"
638
value="${package.name}${build.suffix}.msi"
639
if="${package.config==default.package.config}"/>
642
<candle out="${work.dir}/" exedir="${wix.dir}">
644
<define name="ProductVersion" value="${package.version}" />
645
<define name="NominalVersion" value="${nominal.version}" />
646
<define name="InstallImage" value="package\NUnit-${package.version}" />
648
<sources basedir="${install.dir}">
649
<include name="bin.wxs" />
650
<include name="nunit-gui.wxs" />
651
<include name="doc.wxs" />
652
<include name="tests.wxs" />
653
<include name="samples.wxs" />
654
<include name="pnunit.wxs" />
655
<include name="NUnit.wxs" />
659
<light exedir="${wix.dir}"
660
out="${project.package.dir}/${msi.file.name}"
661
locfile="${wix.dir}/WixUI_en-us.wxl">
663
<include name="${work.dir}/NUnit.wixobj" />
664
<include name="${work.dir}/bin.wixobj" />
665
<include name="${work.dir}/nunit-gui.wixobj" />
666
<include name="${work.dir}/doc.wixobj" />
667
<include name="${work.dir}/samples.wixobj" />
668
<include name="${work.dir}/tests.wixobj" />
669
<include name="${work.dir}/pnunit.wixobj" />
670
<include name="${wix.dir}/wixui.wixlib" />
676
<!-- ***************************************************************** -->
677
<!-- *** Package source files *** -->
678
<!-- ***************************************************************** -->
680
<target name="package-src" depends="clean-package-dir"
681
description="Create full source package for developer use">
683
<call target="copy-docs"/>
684
<call target="copy-samples"/>
685
<call target="copy-src"/>
686
<call target="copy-tools" />
688
<copy file="license.txt" todir="${package.working.dir}" />
690
<!-- Create the zip file -->
692
zipfile="${project.package.dir}/${package.name}-src.zip">
693
<fileset basedir="${package.working.dir}" prefix="${package.name}">
699
<!-- ***************************************************************** -->
700
<!-- *** Package docs *** -->
701
<!-- ***************************************************************** -->
703
<target name="package-docs" depends="clean-package-dir"
704
description="Create a zip of the docs only">
706
<call target="copy-docs"/>
708
<!-- Create the zip file -->
710
zipfile="${project.package.dir}/${package.name}-docs.zip">
711
<fileset basedir="${package.working.dir}" prefix="${package.name}">
718
<!-- ***************************************************************** -->
719
<!-- *** Package resources *** -->
720
<!-- ***************************************************************** -->
722
<target name="package-resources" depends="clean-package-dir"
723
description="Package resources for localization - currently not working">
725
<copy todir="${package.resource.dir}/nunit-gui-runner">
726
<fileset basedir="GuiRunner/nunit-gui/obj/Release">
727
<include name="*.resources"/>
731
<copy todir="${package.resource.dir}/nunit.uikit">
732
<fileset basedir="GuiComponents/UiKit/obj/Release">
733
<include name="NUnit.UiKit.AddConfigurationDialog.resources"/>
734
<include name="NUnit.UiKit.AssemblyPathDialog.resources"/>
735
<include name="NUnit.UiKit.ConfigurationEditor.resources"/>
736
<include name="NUnit.UiKit.RenameConfigurationDialog.resources"/>
737
<include name="NUnit.UiKit.TestPropertiesDialog.resources"/>
738
<include name="NUnit.UiKit.TestTree.resources"/>
742
<copy todir="${package.working.dir}">
743
<fileset basedir="${project.tools.dir}/localization">
744
<include name="*.*"/>
748
<if test="${property::exists('localize')}">
749
<foreach property="culture" item="String" delim=","
751
<foreach property="folder" item="Folder"
752
in="${package.working.dir}/resources">
753
<property name="proj"
754
value="${path::get-file-name(folder)}"/>
755
<property name="projdir"
756
value="${package.working.dir}/${culture}/${proj}"/>
757
<foreach property="file" item="File" in="${folder}">
758
<property name="filename"
759
value="${path::get-file-name-without-extension(file)}"/>
761
tofile="${projdir}/${filename}.${culture}.resources"/>"
768
zipfile="${project.package.dir}/${package.name}-resources.zip">
769
<fileset basedir="${package.working.dir}" prefix="${package.name}">
776
<!-- ***************************************************************** -->
777
<!-- *** Helper targets used for packaging *** -->
778
<!-- ***************************************************************** -->
780
<!-- ***************************************************************** -->
781
<!-- *** Build install image for a package *** -->
782
<!-- ***************************************************************** -->
784
<!-- Create an install image for use by a package -->
785
<target name="build-install-image" depends="clean-package-dir">
787
<call target="copy-top-level-files" />
789
<foreach item="String" delim="+"
790
property="runtime" in="${package.runtimes}">
792
<if test="${framework::exists( runtime )}">
793
<if test="${framework::sdk-exists( runtime )}">
794
<call target="set-${runtime}-runtime-config"/>
795
<call target="copy-bins" />
800
<call target="copy-docs" />
801
<call target="copy-samples" />
805
<target name="copy-top-level-files">
807
<copy file="license.txt" todir="${package.working.dir}" />
808
<copy file="${project.tools.dir}/fit/license.txt"
809
tofile="${package.working.dir}/fit-license.txt" />
810
<copy file="${project.src.dir}/GuiRunner/nunit-gui/Logo.ico"
811
todir="${package.working.dir}" />
812
<copy file="NUnitFitTests.html"
813
todir="${package.working.dir}" />
817
<!-- ***************************************************************** -->
818
<!-- *** Copy a set of binaries for a package *** -->
819
<!-- ***************************************************************** -->
821
<target name="copy-bins" depends="build">
823
<mkdir dir="${package.bin.dir}"/>
824
<copy todir="${package.bin.dir}/${runtime.config}">
825
<fileset basedir="${current.build.dir}">
827
<include name="lib/*"/>
828
<include name="tests/*"/>
829
<include name="framework/*"/>
830
<exclude name="*.wixobj"/>
831
<exclude name="nunit-server.*"/>
832
<exclude name="nunit-test-server.*"/>
838
<!-- ***************************************************************** -->
839
<!-- *** Copy the documentation for a package *** -->
840
<!-- ***************************************************************** -->
842
<target name="copy-docs">
843
<mkdir dir="${package.doc.dir}"/>
844
<copy todir="${package.doc.dir}">
845
<fileset basedir="${project.doc.dir}">
846
<include name="*.html"/>
847
<include name="nunit.css"/>
848
<include name="codeFuncs.js"/>
849
<include name="favicon.ico"/>
850
<include name="files/*"/>
851
<include name="img/*"/>
852
<exclude name="img/thumbs.db"/>
857
<!-- ***************************************************************** -->
858
<!-- *** Copy sample programs for a package *** -->
859
<!-- ***************************************************************** -->
861
<target name="copy-samples">
863
<mkdir dir="${package.samples.dir}"/>
865
<!-- Copy files that are not part of an individual project -->
866
<copy todir="${package.samples.dir}">
867
<fileset basedir="${project.samples.dir}">
868
<include name="ReadMe.txt" />
869
<include name="samples.common" />
870
<include name="csharp/CSharp.sln" />
871
<include name="jsharp/jsharp.sln" />
872
<include name="vb/vb-samples.sln" />
873
<include name="cpp/managed/managed-cpp.sln" />
874
<include name="cpp/cpp-cli/cpp-cli.sln" />
875
<include name="Extensibility/Core/CoreExtensibility.sln" />
876
<include name="Extensibility/Core/Install.bat" />
880
<!-- Copy each project's files -->
881
<nant target="package">
882
<buildfiles refid="sample.buildfiles" failonerror="true" />
888
<!-- ***************************************************************** -->
889
<!-- *** Copy the source code for a package *** -->
890
<!-- ***************************************************************** -->
892
<target name="copy-src">
893
<delete dir="${package.src.dir}" />
894
<mkdir dir="${package.src.dir}"/>
896
<!-- Copy project top level files -->
897
<copy todir="${package.working.dir}">
898
<fileset basedir="${project.base.dir}">
899
<include name="license.rtf"/>
900
<include name="nunit.build"/>
901
<include name="nunit.build.include"/>
902
<include name="nunit.sln"/>
903
<include name="nunit.snk"/>
904
<include name="NUnitFitTests.html"/>
905
<include name="NUnitTests.nunit"/>
906
<include name="NUnitTests.config"/>
907
<include name="NUnitTests.v1.nunit"/>
908
<include name="NUnitTests.v2.nunit"/>
912
<!-- Copy src dir files -->
913
<copy todir="${package.src.dir}">
914
<fileset basedir="${project.src.dir}">
915
<include name="nunit.snk"/>
916
<include name="CommonAssemblyInfo.cs"/>
917
<include name="nunit20under21.config"/>
918
<include name="nunit20under22.config"/>
919
<include name="nunit21under22.config"/>
920
<include name="PNUnit/*.conf"/>
921
<include name="PNUnit/runpnunit.bat"/>
925
<!-- Copy lib dir files -->
926
<copy todir="${package.lib.dir}">
927
<fileset basedir="${project.lib.dir}">
928
<include name="*.dll"/>
932
<!-- Copy install directory files -->
933
<copy todir="${package.install.dir}">
934
<fileset basedir="${project.install.dir}">
935
<include name="bin.wxs" />
936
<include name="nunit-gui.wxs" />
937
<include name="doc.wxs" />
938
<include name="tests.wxs" />
939
<include name="samples.wxs" />
940
<include name="NUnit.wxs"/>
944
<!-- Copy individual projects -->
945
<nant target="package" inheritrefs="true">
946
<buildfiles refid="project.buildfiles" />
949
<nant target="package" inheritrefs="true">
950
<buildfiles refid="gui.buildfiles" />
955
<!-- ***************************************************************** -->
956
<!-- *** Copy the tools for a package *** -->
957
<!-- ***************************************************************** -->
959
<target name="copy-tools">
961
<mkdir dir="${package.tools.dir}" />
963
<copy todir="${package.tools.dir}">
964
<fileset basedir="${project.tools.dir}">
965
<include name="fit/fit.dll"/>
966
<include name="fit/runFile.exe"/>
967
<include name="fit/runFile.exe.config"/>
968
<include name="fit/license.txt"/>
969
<include name="bin/GenSyntax.exe"/>
970
<include name="src/Gensyntax/GenSyntax.build"/>
971
<include name="src/Gensyntax/GenSyntax.csproj"/>
972
<include name="src/Gensyntax/GenSyntax.sln"/>
973
<include name="src/Gensyntax/App.ico"/>
974
<include name="src/GenSyntax/*.cs"/>
975
<include name="src/Gensyntax/Templates/*.cs"/>
981
<!-- ***************************************************************** -->
982
<!-- *** Targets for installing the NUnit distribution *** -->
983
<!-- ***************************************************************** -->
985
<target name="install" depends="build-install-image"
986
description="Install NUnit directly from the build">
990
<!-- ***************************************************************** -->
991
<!-- *** Targets for building custom tools used in the build *** -->
993
<!-- *** NOTE: Tools are not built automatically. If you are *** -->
994
<!-- *** building from source and don't have binaries for *** -->
995
<!-- *** NUnit-specific tools, you can run this target. *** -->
996
<!-- ***************************************************************** -->
998
<target name="clean-tools"
999
description="Remove binaries of tools used to build NUnit (DANGEROUS!)">
1001
<nant target="clean" buildfile="tools/src/GenSyntax/GenSyntax.build"/>
1005
<target name="build-tools"
1006
description="Build tools used in building NUnit">
1008
<nant target="build" buildfile="tools/src/GenSyntax/GenSyntax.build"/>
1012
<!-- ***************************************************************** -->
1013
<!-- ****** Patternsets and Filesets Used by Various Targets ******** -->
1014
<!-- ***************************************************************** -->
1016
<fileset id="project.buildfiles" basedir="${project.src.dir}">
1019
<include name="NUnitFramework/framework/nunit.framework.build" />
1020
<include name="NUnitCore/interfaces/nunit.core.interfaces.build" />
1021
<include name="NUnitCore/core/nunit.core.build" />
1022
<include name="NUnitMocks/mocks/nunit.mocks.build" />
1023
<include name="ClientUtilities/util/nunit.util.build" />
1025
<!-- Console Runner -->
1026
<include name="ConsoleRunner/nunit-console/nunit-console.build" />
1027
<include name="ConsoleRunner/nunit-console-exe/nunit-console.exe.build" />
1029
<!-- Test Server -->
1030
<include name="NUnitTestServer/nunit-server-exe/nunit-server.exe.build" />
1031
<include name="NUnitTestServer/nunit-agent-exe/nunit-agent.exe.build" />
1034
<include name="PNUnit/pnunit.framework/pnunit.framework.build" />
1035
<include name="PNUnit/agent/pnunit-agent.build"/>
1036
<include name="PNUnit/launcher/pnunit-launcher.build"/>
1038
<!-- Test Utilities and Dummy Projects -->
1039
<include name="tests/mock-assembly/mock-assembly.build" />
1040
<include name="tests/nonamespace-assembly/nonamespace-assembly.build" />
1041
<include name="tests/test-assembly/test-assembly.build" />
1042
<include name="tests/test-utilities/test-utilities.build" />
1043
<include name="tests/loadtest-assembly/loadtest-assembly.build" />
1044
<include name="tests/timing-tests/timing-tests.build" />
1046
<!-- NUnit Base Tests -->
1047
<include name="NUnitFramework/tests/nunit.framework.tests.build" />
1048
<include name="NUnitCore/tests/nunit.core.tests.build" />
1049
<include name="NUnitMocks/tests/nunit.mocks.tests.build" />
1050
<include name="ClientUtilities/tests/nunit.util.tests.build" />
1052
<!-- Console Runner Tests -->
1053
<include name="ConsoleRunner/tests/nunit-console.tests.build" />
1055
<!-- PNUnit Tests -->
1056
<include name="PNUnit/tests/pnunit.tests.build"/>
1059
<include name="NUnitFixtures/fixtures/nunit.fixtures.build" />
1060
<include name="NUnitFixtures/tests/nunit.fixtures.tests.build" />
1064
<fileset id="gui.buildfiles" basedir="${project.src.dir}">
1067
<include name="GuiException/UiException/nunit.uiexception.build" />
1068
<include name="GuiComponents/UiKit/nunit.uikit.build" />
1069
<include name="GuiRunner/nunit-gui/nunit-gui.build" />
1070
<include name="GuiRunner/nunit-gui-exe/nunit-gui.exe.build" />
1073
<include name="GuiException/tests/nunit.uiexception.tests.build" />
1074
<include name="GuiComponents/tests/nunit.uikit.tests.build" />
1075
<include name="GuiRunner/tests/nunit-gui.tests.build" />
1079
<!-- BuildFiles for Samples -->
1080
<!-- Note: For each sample, sample.buildfile includes sample.build.
1081
The distribution includes sample.build, but not sample.buildfile,
1082
because the latter is used by NUnit for packaging. -->
1083
<fileset id="sample.buildfiles" basedir="${project.samples.dir}">
1085
<!-- CSharp Samples -->
1086
<include name="csharp/failures/cs-failures.build" />
1087
<include name="csharp/money/cs-money.build" />
1088
<include name="csharp/syntax/cs-syntax.build" />
1090
<!-- JSharp Samples -->
1091
<include name="jsharp/failures/jsharp-failures.build"
1092
if="${task::exists('vjc') and platform::is-windows()}" />
1095
<include name="vb/failures/vb-failures.build"
1096
if="${task::exists('vbc') and platform::is-windows()}" />
1097
<include name="vb/money/vb-money.build"
1098
if="${task::exists('vbc') and platform::is-windows()}" />
1099
<include name="vb/syntax/vb-syntax.build"
1100
if="${task::exists('vbc') and platform::is-windows()}" />
1102
<!-- Managed C++ Samples -->
1103
<include name="cpp/managed/failures/cpp-managed-failures.build"
1104
if="${platform::is-windows()}" />
1106
<!-- C++/CLI Samples -->
1107
<include name="cpp/cpp-cli/failures/cpp-cli-failures.build"
1108
if="${platform::is-windows()}" />
1109
<include name="cpp/cpp-cli/syntax/cpp-cli-syntax.build"
1110
if="${platform::is-windows()}" />
1112
<!-- Extensibility Samples -->
1113
<include name="Extensibility/Core/Minimal/Minimal.build" />
1114
<include name="Extensibility/Core/SampleFixtureExtension/SampleFixtureExtension.build" />
1115
<include name="Extensibility/Core/SampleSuiteExtension/SampleSuiteExtension.build" />
1118
<!-- Files to be copied to source directories -->
1119
<fileset id="source-files" >
1120
<include name="**/*.sln" />
1121
<include name="**/*.csproj" />
1122
<include name="**/*.config" />
1123
<include name="**/*.build" />
1124
<include name="**/*.cs" />
1125
<include name="**/*.xsd" />
1126
<include name="**/*.xslt" />
1127
<include name="**/*.resx" />
1128
<include name="**/*.jpg" />
1129
<include name="**/*.gif" />
1130
<include name="**/*.ico" />
1131
<include name="**/*.txt" />
1132
<include name="**/resources/*" />
1134
<exclude name="**/CVS/**" />
1135
<exclude name="**/bin/**" />
1136
<exclude name="**/obj/**" />
1137
<exclude name="**/Debug/**" />
1138
<exclude name="**/Release/**" />