Index: src/NAnt.DotNet/Tasks/CompilerBase.cs
===================================================================
RCS file: /cvsroot/nant/nant/src/NAnt.DotNet/Tasks/CompilerBase.cs,v
retrieving revision 1.83
diff -u -r1.83 CompilerBase.cs
--- src/NAnt.DotNet/Tasks/CompilerBase.cs	25 Aug 2004 17:21:47 -0000	1.83
+++ src/NAnt.DotNet/Tasks/CompilerBase.cs	5 Oct 2004 18:41:24 -0000
@@ -503,7 +503,20 @@
                     // compile resources
                     foreach (ResourceFileSet resources in ResourcesList) {
                         // Resx args
-                        foreach (string fileName in resources.ResxFiles.FileNames) {
+                        ResourceFileSet resxFiles = (ResourceFileSet) resources.ResxFiles;
+
+                        //disable prefixes on this fileset.  we handle them ourselves later.
+                        resxFiles.Prefix = null;
+                        resxFiles.DynamicPrefix = false;
+
+                        if (resxFiles.FileNames.Count > 0) 
+                        {
+                            // compile to a temp .resources files
+                            CompileResxResources(resxFiles);
+                        }
+
+                        foreach (string fileName in resxFiles.FileNames) {
+
                             // determine manifest resource name
                             string manifestResourceName = this.GetManifestResourceName(
                                 resources, fileName);
@@ -511,9 +524,6 @@
                             string tmpResourcePath = Path.ChangeExtension(fileName, ".resources");
                             compiledResourceFiles.Add(tmpResourcePath);
                             
-                            // compile to a temp .resources file
-                            CompileResxResource(new FileInfo(fileName), new FileInfo(tmpResourcePath));
-                            
                             // check if resource is localized
                             CultureInfo resourceCulture = CompilerBase.GetResourceCulture(fileName,
                                 Path.ChangeExtension(fileName, Extension));
@@ -1228,6 +1238,64 @@
             }
         }
         
+        /// <summary>
+        /// Compiles a set of resx files to .resources files.
+        /// </summary>
+        /// <param name="fileset">A fileset containing the list of .resx files to compile</param>
+        protected void CompileResxResources(ResourceFileSet fileset) 
+        {
+            ResGenTask resgen = new ResGenTask();
+
+            // inherit project from current task
+            resgen.Project = Project;
+
+            // inherit namespace manager from current task
+            resgen.NamespaceManager = NamespaceManager;
+
+            // current task is parent
+            resgen.Parent = this;
+
+            // make sure framework specific information is set
+            resgen.InitializeTaskConfiguration();
+           
+            // inherit Verbose setting from current task
+            resgen.Verbose = Verbose;
+
+            // set parent of child elements
+            resgen.Assemblies.Parent = resgen;
+
+            // inherit project from parent task
+            resgen.Assemblies.Project = resgen.Project;
+
+            // inherit namespace manager from parent task
+            resgen.Assemblies.NamespaceManager = resgen.NamespaceManager;
+
+            // set base directory for filesets
+            resgen.Assemblies.BaseDirectory = References.BaseDirectory;
+
+            // set task properties
+            resgen.Resources = fileset;
+
+            // inherit assembly references from current task
+            foreach (string assemblyFile in References.FileNames) 
+            {
+                resgen.Assemblies.Includes.Add(assemblyFile);
+            }
+
+            // increment indentation level
+            Project.Indent();
+            try 
+            {
+                // execute the task
+                resgen.Execute();
+            } 
+            finally 
+            {
+                // restore indentation level
+                Project.Unindent();
+            }
+        }
+        
         #endregion Protected Instance Methods
 
         #region Public Static Methods
