static Tuple <bool, Messages, string> RunExplicitWithResult(string scriptFilePath, string[] scriptArguments, string[] fsiArguments, bool useCache) { var stdOut = Console.Out; var stdErr = Console.Error; var sbOut = new System.Text.StringBuilder(); var outStream = new StringWriter(sbOut); Console.SetOut(outStream); Console.SetError(outStream); Tuple <bool, Messages> result; try { result = FSIHelper.executeBuildScriptWithArgsAndFsiArgsAndReturnMessages( scriptFilePath, scriptArguments, fsiArguments, useCache); } finally { Console.SetOut(stdOut); // Now all output start going back to console window Console.SetError(stdErr); Console.Write(sbOut.ToString()); } foreach (var x in result.Item2) { Console.WriteLine(x.Message); } return(Tuple.Create(result.Item1, result.Item2, sbOut.ToString() .Replace("Running Buildscript: " + scriptFilePath, "") .Replace("\n", "").Replace("\r", ""))); }
static string RunExplicit(string scriptFilePath, string arguments, bool useCache) { var stdOut = Console.Out; var sbOut = new System.Text.StringBuilder(); var outStream = new StringWriter(sbOut); Console.SetOut(outStream); Tuple <bool, Microsoft.FSharp.Collections.FSharpList <ProcessHelper.ConsoleMessage> > result; try { result = FSIHelper.executeBuildScriptWithArgsAndReturnMessages(scriptFilePath, new string[] { }, useCache, false); } finally { Console.SetOut(stdOut); // Now all output start going back to console window Console.Write(sbOut.ToString()); } if (!result.Item1) { var errors = result.Item2.Where(x => x.IsError).Select(x => x.Message); throw new Exception("Executing script failed. Errors: \n" + String.Join("\n", errors)); } foreach (var x in result.Item2) { Console.WriteLine(x.Message); } var messages = result.Item2.Where(x => !x.IsError).Select(x => x.Message); return (sbOut.ToString() .Replace("Running Buildscript: " + scriptFilePath, "") .Replace("\n", "").Replace("\r", "")); }