Author: lluis
Date: 2007-04-27 11:13:53 -0400 (Fri, 27 Apr 2007)
New Revision: 76387

Modified:
   trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/Project.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectConvertTool.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectFileCollection.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
Log:
* MonoDevelop.Projects/ProjectService.cs: Report errors using the
  progress monitor, instead of throwing an exception.
* MonoDevelop.Projects/ProjectConvertTool.cs: Print an error message if
  the project can't be exported.
* MonoDevelop.Projects/ProjectFileCollection.cs: In GetFile, compare
  files using the full path.
* MonoDevelop.Projects/Project.cs: When exporting a project, include
  referenced assemblies.

Modified: trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog   2007-04-27 
13:29:42 UTC (rev 76386)
+++ trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog   2007-04-27 
15:13:53 UTC (rev 76387)
@@ -1,3 +1,14 @@
+2007-04-27  Lluis Sanchez Gual <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.Projects/ProjectService.cs: Report errors using the
+         progress monitor, instead of throwing an exception.
+       * MonoDevelop.Projects/ProjectConvertTool.cs: Print an error message if
+         the project can't be exported.
+       * MonoDevelop.Projects/ProjectFileCollection.cs: In GetFile, compare
+         files using the full path.
+       * MonoDevelop.Projects/Project.cs: When exporting a project, include
+         referenced assemblies.
+
 2007-04-26  Ankit Jain  <[EMAIL PROTECTED]>
 
        * MonoDevelop.Projects/Project.cs (CheckNeedsBuild): If any project

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/Project.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/Project.cs 
    2007-04-27 13:29:42 UTC (rev 76386)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/Project.cs 
    2007-04-27 15:13:53 UTC (rev 76387)
@@ -561,6 +561,9 @@
                                if (pf.Subtype != Subtype.Directory)
                                        col.Add (pf.FilePath);
                        }
+                       foreach (ProjectReference pref in ProjectReferences)
+                               if (pref.ReferenceType == 
ReferenceType.Assembly)
+                                       col.Add (pref.Reference);
                        return col;
                }
 

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectConvertTool.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectConvertTool.cs
  2007-04-27 13:29:42 UTC (rev 76386)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectConvertTool.cs
  2007-04-27 15:13:53 UTC (rev 76387)
@@ -100,8 +100,14 @@
                        destPath = Runtime.FileService.GetFullPath (destPath);
                        
                        string ofile = Services.ProjectService.Export (monitor, 
projectFile, destPath, format);
-                       Console.WriteLine ("Saved file: " + ofile);
-                       return 0;
+                       if (ofile != null) {
+                               Console.WriteLine ("Saved file: " + ofile);
+                               return 0;
+                       }
+                       else {
+                               Console.WriteLine ("Project export failed.");
+                               return 1;
+                       }
                }
        }
 }

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectFileCollection.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectFileCollection.cs
       2007-04-27 13:29:42 UTC (rev 76386)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectFileCollection.cs
       2007-04-27 15:13:53 UTC (rev 76387)
@@ -7,6 +7,7 @@
 using System;
 using System.Collections;
 using System.IO;
+using MonoDevelop.Core;
 
 namespace MonoDevelop.Projects
 {
@@ -38,8 +39,10 @@
                public ProjectFile GetFile (string fileName)
                {
                        if (fileName == null) return null;
+                       fileName = Runtime.FileService.GetFullPath (fileName);
+                       
                        foreach (ProjectFile file in this) {
-                               if (file.Name == fileName)
+                               if (Runtime.FileService.GetFullPath (file.Name) 
== fileName)
                                        return file;
                        }
                        return null;

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
      2007-04-27 13:29:42 UTC (rev 76386)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects/ProjectService.cs
      2007-04-27 15:13:53 UTC (rev 76387)
@@ -115,7 +115,8 @@
                        
                        if (sourcePath != targetPath) {
                                using (CombineEntry sourceEntry = 
ReadCombineEntry (rootSourceFile, monitor)) {
-                                       Export (monitor, sourceEntry, 
sourceEntry.BaseDirectory, targetPath, true);
+                                       if (!Export (monitor, sourceEntry, 
sourceEntry.BaseDirectory, targetPath, true))
+                                               return null;
                                }
                                
                                newFile = Path.Combine (targetPath, 
Path.GetFileName (rootSourceFile));
@@ -174,7 +175,7 @@
                        }
                }
                
-               void Export (IProgressMonitor monitor, CombineEntry entry, 
string baseCombinePath, string targetBasePath, bool recursive)
+               bool Export (IProgressMonitor monitor, CombineEntry entry, 
string baseCombinePath, string targetBasePath, bool recursive)
                {
                        StringCollection files = entry.GetExportFiles ();
                        
@@ -182,8 +183,10 @@
                                string fname = Runtime.FileService.GetFullPath 
(file);
                                
                                // Can't export files from outside the root 
solution directory
-                               if (!fname.StartsWith (baseCombinePath + 
Path.DirectorySeparatorChar))
-                                       throw new InvalidOperationException 
("The project or solution references a file located outside the root solution 
directory.", null);
+                               if (!fname.StartsWith (baseCombinePath + 
Path.DirectorySeparatorChar)) {
+                                       monitor.ReportError ("The project or 
solution '" + entry.Name + "' is referencing the file '" + Path.GetFileName 
(file) + "' which is located outside the root solution directory.", null);
+                                       return false;
+                               }
                                
                                string rpath = 
Runtime.FileService.AbsoluteToRelativePath (baseCombinePath, fname);
                                rpath = Path.Combine (targetBasePath, rpath);
@@ -191,13 +194,15 @@
                                if (!Directory.Exists (Path.GetDirectoryName 
(rpath)))
                                        Directory.CreateDirectory 
(Runtime.FileService.GetFullPath (Path.GetDirectoryName (rpath)));
                                
-                               File.Copy (file, rpath);
+                               File.Copy (file, rpath, true);
                        }
                        
                        if (recursive && entry is Combine) {
                                foreach (CombineEntry e in 
((Combine)entry).Entries)
-                                       Export (monitor, e, baseCombinePath, 
targetBasePath, true);
+                                       if (!Export (monitor, e, 
baseCombinePath, targetBasePath, true))
+                                               return false;
                        }
+                       return true;
                }
                
                bool ChangeFormat (IProgressMonitor monitor, CombineEntry 
entry, ArrayList entriesToExport, IFileFormat format, ArrayList oldFiles)

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to