public MSBuildResult[] RunTarget (string target, ProjectConfigurationInfo[] configurations, ILogWriter logWriter,
MSBuildVerbosity verbosity)
{
MSBuildResult[] result = null;
BuildEngine.RunSTA (delegate
{
try {
var project = SetupProject (configurations);
currentLogWriter = logWriter;
var logger = new LocalLogger (file);
engine.UnregisterAllLoggers ();
engine.RegisterLogger (logger);
engine.RegisterLogger (consoleLogger);
consoleLogger.Verbosity = GetVerbosity (verbosity);
project.Build (target);
result = logger.BuildResult.ToArray ();
} catch (Microsoft.Build.Exceptions.InvalidProjectFileException ex) {
var r = new MSBuildResult (
file, false, ex.ErrorSubcategory, ex.ErrorCode, ex.ProjectFile,
ex.LineNumber, ex.ColumnNumber, ex.EndLineNumber, ex.EndColumnNumber,
ex.BaseMessage, ex.HelpKeyword);
logWriter.WriteLine (r.ToString ());
result = new [] { r };
} finally {
currentLogWriter = null;
}
});
return result;
}