public ProjectBuilder(BuildEngine buildEngine, Engine engine, string file) { this.file = file; this.engine = engine; this.buildEngine = buildEngine; consoleLogger = new MDConsoleLogger(LoggerVerbosity.Normal, LogWriteLine, null, null); }
public static void Main(string[] args) { try { RegisterRemotingChannel(); WatchProcess(Console.ReadLine()); BuildEngine builderEngine = new BuildEngine(); BinaryFormatter bf = new BinaryFormatter(); ObjRef oref = RemotingServices.Marshal(builderEngine); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, oref); Console.Error.WriteLine(Convert.ToBase64String(ms.ToArray())); if (WaitHandle.WaitAny(new WaitHandle[] { builderEngine.WaitHandle, exitEvent }) == 0) { // Wait before exiting, so that the remote call that disposed the builder can be completed System.Threading.Thread.Sleep(400); } if (unixRemotingFile != null && File.Exists(unixRemotingFile)) { File.Delete(unixRemotingFile); } } catch (Exception ex) { Console.WriteLine(ex); } }
public MSBuildResult[] RunTarget(string target, ProjectConfigurationInfo[] configurations, ILogWriter logWriter, MSBuildVerbosity verbosity) { MSBuildResult[] result = null; BuildEngine.RunSTA(delegate { try { var project = SetupProject(configurations); currentLogWriter = logWriter; LocalLogger logger = new LocalLogger(Path.GetDirectoryName(file)); engine.UnregisterAllLoggers(); engine.RegisterLogger(logger); engine.RegisterLogger(consoleLogger); consoleLogger.Verbosity = GetVerbosity(verbosity); project.Build(target); result = logger.BuildResult.ToArray(); // } catch (InvalidProjectFileException ex) { // result = new MSBuildResult[] { new MSBuildResult (false, ex.ProjectFile ?? file, ex.LineNumber, ex.ColumnNumber, ex.ErrorCode, ex.Message) }; } finally { currentLogWriter = null; } }); return(result); }
public ProjectBuilder (BuildEngine buildEngine, ProjectCollection engine, string file) { this.file = file; this.engine = engine; this.buildEngine = buildEngine; Refresh (); }
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); }
public MSBuildResult[] RunTarget(string target, ProjectConfigurationInfo[] configurations, ILogWriter logWriter, MSBuildVerbosity verbosity) { MSBuildResult[] result = null; BuildEngine.RunSTA(delegate { try { var project = SetupProject(configurations); currentLogWriter = logWriter; LocalLogger logger = new LocalLogger(Path.GetDirectoryName(file)); engine.UnregisterAllLoggers(); engine.RegisterLogger(logger); engine.RegisterLogger(consoleLogger); consoleLogger.Verbosity = GetVerbosity(verbosity); // We are using this BuildProject overload and the BuildSettings.None argument as a workaround to // an xbuild bug which causes references to not be resolved after the project has been built once. engine.BuildProject(project, new string[] { target }, new Hashtable(), BuildSettings.None); result = logger.BuildResult.ToArray(); } catch (InvalidProjectFileException ex) { result = new MSBuildResult[] { new MSBuildResult(false, ex.ProjectFile ?? file, ex.LineNumber, ex.ColumnNumber, ex.ErrorCode, ex.Message) }; } finally { currentLogWriter = null; } }); return(result); }
public ProjectBuilder(BuildEngine buildEngine, ProjectCollection engine, string file) { this.file = file; this.engine = engine; this.buildEngine = buildEngine; Refresh(); }
public ProjectBuilder (BuildEngine buildEngine, ProjectCollection engine, string file) { this.file = file; this.engine = engine; this.buildEngine = buildEngine; consoleLogger = new ConsoleLogger (LoggerVerbosity.Normal, LogWriteLine, null, null); Refresh (); }
public ProjectBuilder(BuildEngine buildEngine, ProjectCollection engine, string file) { this.file = file; this.engine = engine; this.buildEngine = buildEngine; consoleLogger = new ConsoleLogger(LoggerVerbosity.Normal, LogWriteLine, null, null); Refresh(); }
public string[] GetSupportedTargets(ProjectConfigurationInfo[] configurations) { string[] result = null; BuildEngine.RunSTA(delegate { try { var project = SetupProject(configurations); result = project.Targets.OfType <Target> ().Select(t => t.Name).ToArray(); } catch { result = new string [0]; } }); return(result); }
public string[] GetAssemblyReferences(ProjectConfigurationInfo[] configurations) { string[] refsArray = null; BuildEngine.RunSTA(delegate { var project = SetupProject(configurations); // We are using this BuildProject overload and the BuildSettings.None argument as a workaround to // an xbuild bug which causes references to not be resolved after the project has been built once. engine.BuildProject(project, new string[] { "ResolveAssemblyReferences" }, new Hashtable(), BuildSettings.None); BuildItemGroup grp = project.GetEvaluatedItemsByName("ReferencePath"); List <string> refs = new List <string> (); foreach (BuildItem item in grp) { refs.Add(UnescapeString(item.Include)); } refsArray = refs.ToArray(); }); return(refsArray); }
public string[] GetAssemblyReferences(ProjectConfigurationInfo[] configurations) { string[] refsArray = null; BuildEngine.RunSTA(delegate { var project = SetupProject(configurations); // We are using this BuildProject overload and the BuildSettings.None argument as a workaround to // an xbuild bug which causes references to not be resolved after the project has been built once. var pi = project.CreateProjectInstance(); pi.Build("ResolveAssemblyReferences", null); List <string> refs = new List <string> (); foreach (ProjectItemInstance item in pi.GetItems("ReferencePath")) { refs.Add(UnescapeString(item.EvaluatedInclude)); } refsArray = refs.ToArray(); }); return(refsArray); }
public static void Main() { try { RegisterRemotingChannel(); WatchProcess(Console.ReadLine()); var builderEngine = new BuildEngine(); var bf = new BinaryFormatter(); ObjRef oref = RemotingServices.Marshal(builderEngine); var ms = new MemoryStream(); bf.Serialize(ms, oref); Console.Error.WriteLine("[MonoDevelop]" + Convert.ToBase64String(ms.ToArray())); if (WaitHandle.WaitAny(new WaitHandle[] { builderEngine.WaitHandle, exitEvent }) == 0) { // Wait before exiting, so that the remote call that disposed the builder can be completed Thread.Sleep(400); } } catch (Exception ex) { Console.WriteLine(ex); } }
public static void Main() { try { RegisterRemotingChannel (); WatchProcess (Console.ReadLine ()); var builderEngine = new BuildEngine (); var bf = new BinaryFormatter (); ObjRef oref = RemotingServices.Marshal (builderEngine); var ms = new MemoryStream (); bf.Serialize (ms, oref); Console.Error.WriteLine ("[MonoDevelop]" + Convert.ToBase64String (ms.ToArray ())); if (WaitHandle.WaitAny (new WaitHandle[] { builderEngine.WaitHandle, exitEvent }) == 0) { // Wait before exiting, so that the remote call that disposed the builder can be completed Thread.Sleep (400); } } catch (Exception ex) { Console.WriteLine (ex); } }
public static void Main (string[] args) { try { RegisterRemotingChannel (); WatchProcess (Console.ReadLine ()); BuildEngine builderEngine = new BuildEngine (); BinaryFormatter bf = new BinaryFormatter (); ObjRef oref = RemotingServices.Marshal (builderEngine); MemoryStream ms = new MemoryStream (); bf.Serialize (ms, oref); Console.Error.WriteLine (Convert.ToBase64String (ms.ToArray ())); if (WaitHandle.WaitAny (new WaitHandle[] { builderEngine.WaitHandle, exitEvent }) == 0) { // Wait before exiting, so that the remote call that disposed the builder can be completed System.Threading.Thread.Sleep (400); } if (unixRemotingFile != null && File.Exists (unixRemotingFile)) File.Delete (unixRemotingFile); } catch (Exception ex) { Console.WriteLine (ex); } }
public MSBuildResult Run( ProjectConfigurationInfo[] configurations, ILogWriter logWriter, MSBuildVerbosity verbosity, string[] runTargets, string[] evaluateItems, string[] evaluateProperties) { if (runTargets == null || runTargets.Length == 0) { throw new ArgumentException("runTargets is empty"); } MSBuildResult result = null; BuildEngine.RunSTA(delegate { try { var project = SetupProject(configurations); currentLogWriter = logWriter; ILogger[] loggers; var logger = new LocalLogger(file); if (logWriter != null) { consoleLogger.Verbosity = GetVerbosity(verbosity); loggers = new ILogger[] { logger, consoleLogger }; } else { loggers = new ILogger[] { logger }; } //building the project will create items and alter properties, so we use a new instance var pi = project.CreateProjectInstance(); pi.Build(runTargets, loggers); result = new MSBuildResult(logger.BuildResult.ToArray()); if (evaluateProperties != null) { foreach (var name in evaluateProperties) { var prop = pi.GetProperty(name); result.Properties [name] = prop != null? prop.EvaluatedValue : null; } } if (evaluateItems != null) { foreach (var name in evaluateItems) { var grp = pi.GetItems(name); var list = new List <MSBuildEvaluatedItem> (); foreach (var item in grp) { var evItem = new MSBuildEvaluatedItem(name, UnescapeString(item.EvaluatedInclude)); foreach (var m in item.Metadata) { evItem.Metadata [m.Name] = UnescapeString(m.EvaluatedValue); } list.Add(evItem); } result.Items[name] = list; } } } catch (Microsoft.Build.Exceptions.InvalidProjectFileException ex) { var r = new MSBuildTargetResult( 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 MSBuildResult(new [] { r }); } finally { currentLogWriter = null; } }); return(result); }
public MSBuildResult Run( ProjectConfigurationInfo[] configurations, ILogWriter logWriter, MSBuildVerbosity verbosity, string[] runTargets, string[] evaluateItems, string[] evaluateProperties) { MSBuildResult result = null; BuildEngine.RunSTA(delegate { try { var project = SetupProject(configurations); currentLogWriter = logWriter; buildEngine.Engine.UnregisterAllLoggers(); var logger = new LocalLogger(file); buildEngine.Engine.RegisterLogger(logger); if (logWriter != null) { buildEngine.Engine.RegisterLogger(consoleLogger); consoleLogger.Verbosity = GetVerbosity(verbosity); } if (runTargets != null && runTargets.Length > 0) { // We are using this BuildProject overload and the BuildSettings.None argument as a workaround to // an xbuild bug which causes references to not be resolved after the project has been built once. buildEngine.Engine.BuildProject(project, runTargets, new Hashtable(), BuildSettings.None); } result = new MSBuildResult(logger.BuildResult.ToArray()); if (evaluateProperties != null) { foreach (var name in evaluateProperties) { result.Properties [name] = project.GetEvaluatedProperty(name); } } if (evaluateItems != null) { foreach (var name in evaluateItems) { BuildItemGroup grp = project.GetEvaluatedItemsByName(name); var list = new List <MSBuildEvaluatedItem> (); foreach (BuildItem item in grp) { var evItem = new MSBuildEvaluatedItem(name, UnescapeString(item.FinalItemSpec)); foreach (DictionaryEntry de in (IDictionary)evaluatedMetadataField.GetValue(item)) { evItem.Metadata [(string)de.Key] = UnescapeString((string)de.Value); } list.Add(evItem); } result.Items[name] = list; } } } catch (InvalidProjectFileException ex) { var r = new MSBuildTargetResult( 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 MSBuildResult(new [] { r }); } finally { currentLogWriter = null; } }); return(result); }