//
// (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
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-#if NET_2_0
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;
Parameters parameters;
string[] args;
- string binPath;
string defaultSchema;
Engine engine;
Project project;
ConsoleReportPrinter printer;
-
+ // this does nothing but adds strong reference to Microsoft.Build.Tasks*.dll that we need to load consistently.
+ Microsoft.Build.Tasks.Copy dummy;
+
public static void Main (string[] args)
{
MainClass mc = new MainClass ();
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;
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;
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;
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) {
catch (CommandLineException cle) {
ErrorUtilities.ReportError(cle.ErrorCode, show_stacktrace ? cle.ToString() : cle.Message);
}
-
- catch (Exception) {
- throw;
- }
-
finally {
if (engine != null)
engine.UnregisterAllLoggers ();
}
}
-
}
// code from mcs/report.cs
break;
case "xterm-color":
+ case "xterm-256color":
xterm_colors = true;
break;
}
}
-#endif