public override ITascResult Execute(TascContext context) { ITascResult result = TascResult.Pass; try { var formattedParams = (CommandParams != null) ? string.Join(" ", CommandParams) : ""; if (RunWindowed) { var processStartInfo = new ProcessStartInfo(Command, formattedParams) { CreateNoWindow = false }; using (var process = new Process()) { process.StartInfo = processStartInfo; process.EnableRaisingEvents = false; process.StartInfo.WorkingDirectory = TascProject.Instance.Root; process.Start(); } } else { var processStartInfo = new ProcessStartInfo(Command, formattedParams) { CreateNoWindow = true, UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true }; using (var process = new Process()) { process.StartInfo = processStartInfo; process.EnableRaisingEvents = false; process.StartInfo.WorkingDirectory = TascProject.Instance.Root; process.Start(); // Handle Standard Output process.OutputDataReceived += (sender, args) => Console.WriteLine(args.Data); process.ErrorDataReceived += (sender, args) => Console.WriteLine(args.Data); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); } } } catch (Exception) { result = TascResult.Fail; } return(result); }
public ITascResult Execute() { var context = new TascContext(this); ApplyProjectSettingsToExecutionContext(this, new GenerateExecutionContextArgs(context)); ITascResult result = null; foreach (var tasc in _tascs) { try { result = tasc.Execute(context); } finally { tasc.Cleanup(); } } return(result); }