[xbuild] xbuild/Main.cs - remove unnecessary catch/throw.
[mono.git] / mcs / tools / xbuild / Main.cs
index 8c8cd6c30951f3654121930067e1566db4fa4f20..d86c03d383c1690929ed106cb66a432a73660c98 100644 (file)
@@ -34,6 +34,7 @@ using System;
 using System.Collections;
 using System.IO;
 using System.Reflection;
+using System.Text;
 using Microsoft.Build.BuildEngine;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
@@ -44,7 +45,6 @@ namespace Mono.XBuild.CommandLine {
                
                Parameters      parameters;
                string[]        args;
-               string          binPath;
                string          defaultSchema;
                
                Engine          engine;
@@ -61,11 +61,11 @@ namespace Mono.XBuild.CommandLine {
                
                public MainClass ()
                {
-                       binPath = ToolLocationHelper.GetPathToDotNetFramework (TargetDotNetFrameworkVersion.Version20);
+                       string binPath = ToolLocationHelper.GetPathToDotNetFramework (TargetDotNetFrameworkVersion.Version20);
                        defaultSchema = Path.Combine (binPath, "Microsoft.Build.xsd");
-                       parameters = new Parameters (binPath);
+                       parameters = new Parameters ();
                }
-               
+
                public void Execute ()
                {
                        bool result = false;
@@ -76,10 +76,16 @@ namespace Mono.XBuild.CommandLine {
                                show_stacktrace = (parameters.LoggerVerbosity == LoggerVerbosity.Detailed ||
                                        parameters.LoggerVerbosity == LoggerVerbosity.Diagnostic);
                                
-                               if (parameters.DisplayVersion)
+                               if (!parameters.NoLogo)
                                        ErrorUtilities.ShowVersion (false);
                                
-                               engine  = new Engine (binPath);
+                               engine  = Engine.GlobalEngine;
+                               if (!String.IsNullOrEmpty (parameters.ToolsVersion)) {
+                                       if (engine.Toolsets [parameters.ToolsVersion] == null)
+                                               ErrorUtilities.ReportError (0, new UnknownToolsVersionException (parameters.ToolsVersion).Message);
+
+                                       engine.DefaultToolsVersion = parameters.ToolsVersion;
+                               }
                                
                                engine.GlobalProperties = this.parameters.Properties;
                                
@@ -92,6 +98,21 @@ namespace Mono.XBuild.CommandLine {
                                        cl.Verbosity = parameters.LoggerVerbosity; 
                                        engine.RegisterLogger (cl);
                                }
+
+                               if (parameters.FileLoggerParameters != null) {
+                                       for (int i = 0; i < parameters.FileLoggerParameters.Length; i ++) {
+                                               string fl_params = parameters.FileLoggerParameters [i];
+                                               if (fl_params == null)
+                                                       continue;
+
+                                               var fl = new FileLogger ();
+                                               if (fl_params.Length == 0 && i > 0)
+                                                       fl.Parameters = String.Format ("LogFile=msbuild{0}.log", i);
+                                               else
+                                                       fl.Parameters = fl_params;
+                                               engine.RegisterLogger (fl);
+                                       }
+                               }
                                
                                foreach (LoggerInfo li in parameters.Loggers) {
                                        Assembly assembly;
@@ -119,14 +140,7 @@ namespace Mono.XBuild.CommandLine {
                                        return;
                                }
 
-                               project.Load (projectFile);
-                               
-                               string oldCurrentDirectory = Environment.CurrentDirectory;
-                               string dir = Path.GetDirectoryName (projectFile);
-                               if (!String.IsNullOrEmpty (dir))
-                                       Directory.SetCurrentDirectory (dir);
-                               result = engine.BuildProject (project, parameters.Targets, null);
-                               Directory.SetCurrentDirectory (oldCurrentDirectory);
+                               result = engine.BuildProjectFile (projectFile, parameters.Targets, null, null, BuildSettings.None, parameters.ToolsVersion);
                        }
                        
                        catch (InvalidProjectFileException ipfe) {
@@ -140,11 +154,6 @@ namespace Mono.XBuild.CommandLine {
                        catch (CommandLineException cle) {
                                ErrorUtilities.ReportError(cle.ErrorCode, show_stacktrace ? cle.ToString() : cle.Message);
                        }
-
-                       catch (Exception) {
-                               throw;
-                       }
-                       
                        finally {
                                if (engine != null)
                                        engine.UnregisterAllLoggers ();
@@ -153,7 +162,6 @@ namespace Mono.XBuild.CommandLine {
                        }
 
                }
-
        }
 
        // code from mcs/report.cs