Index: src/NAnt.DotNet/Tasks/CompilerBase.cs
===================================================================
RCS file: /cvsroot/nant/nant/src/NAnt.DotNet/Tasks/CompilerBase.cs,v
retrieving revision 1.62
diff -u -r1.62 CompilerBase.cs
--- src/NAnt.DotNet/Tasks/CompilerBase.cs	31 Dec 2003 17:24:36 -0000	1.62
+++ src/NAnt.DotNet/Tasks/CompilerBase.cs	13 Jan 2004 14:20:46 -0000
@@ -47,6 +47,7 @@
         private string _define;
         private FileInfo _win32icon;
         private bool _warnAsError;
+        private bool _forceRebuild;
         private string _mainType;
         private FileSet _references = new FileSet();
         private FileSet _lib = new FileSet();
@@ -169,6 +170,20 @@
         }
 
         /// <summary>
+        /// Instructs NAnt to recompile the output file regardless of the file timestamps.
+        /// </summary>
+        /// <remarks>
+        /// When this parameter is to <see langword="true" />, NAnt will always
+        /// run the compiler to rebuild the output file, regardless of the file timestamps.
+        /// </remarks>
+        [TaskAttribute("rebuild")]
+        [BooleanValidator()]
+        public bool ForceRebuild {
+            get { return _forceRebuild; }
+            set { _forceRebuild = value; }
+        }
+
+        /// <summary>
         /// Specifies which type contains the Main method that you want to use
         /// as the entry point into the program.
         /// </summary>
@@ -795,6 +810,11 @@
         protected virtual bool NeedsCompiling() {
             // return true as soon as we know we need to compile
 
+            if (ForceRebuild) {
+                Log(Level.Verbose, LogPrefix + "'rebuild' attribute set to true, recompiling.");
+                return true;
+            }
+
             if (!OutputFile.Exists) {
                 return true;
             }
