X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Ftools%2Fxbuild%2FMain.cs;h=5dc9b50b2fdb2034e1992704e201ff10f095318c;hb=9846dee7707bbfb74c13e4ee23159ede6066a0b6;hp=8c8cd6c30951f3654121930067e1566db4fa4f20;hpb=9e1f34dd2d7be45b2a3a6b1c133a4a1de8c3d864;p=mono.git diff --git a/mcs/tools/xbuild/Main.cs b/mcs/tools/xbuild/Main.cs index 8c8cd6c3095..5dc9b50b2fd 100644 --- a/mcs/tools/xbuild/Main.cs +++ b/mcs/tools/xbuild/Main.cs @@ -8,6 +8,7 @@ // // (C) 2005 Marek Sieradzki // Copyright 2009 Novell, Inc (http://www.novell.com) +// Copyright 2011 Xamarin Inc (http://www.xamarin.com). // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -34,6 +35,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 +46,6 @@ namespace Mono.XBuild.CommandLine { Parameters parameters; string[] args; - string binPath; string defaultSchema; Engine engine; @@ -61,11 +62,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 +77,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 +99,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 +141,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 +155,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 +163,6 @@ namespace Mono.XBuild.CommandLine { } } - } // code from mcs/report.cs @@ -187,6 +196,7 @@ namespace Mono.XBuild.CommandLine { break; case "xterm-color": + case "xterm-256color": xterm_colors = true; break; }