Cosmos/source2/Debug/Cosmos.Debug.HostProcess/Program.cs
kudzu_cp f00f425a74
2012-06-24 19:02:20 +00:00

50 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.IO.Pipes;
using System.Threading;
using System.Diagnostics;
namespace Cosmos.VS.HostProcess {
public class Program {
static int Main(string[] args) {
try {
Console.WriteLine("Cosmos Visual Studio Debug Host");
Console.WriteLine("Waiting for start signal.");
// This is here to allow this process to start, but pause till the caller tells it to continue.
Console.ReadLine();
// Arg[0] - ShellExecute
bool xShellExecute = (string.Compare(args[0], "true", true) == 0);
// Target exe or file
var xStartInfo = new ProcessStartInfo();
xStartInfo.FileName = args[1];
var xArgSB = new StringBuilder();
// Skip other arguments and "rearg" the rest
foreach (var arg in args.Skip(2)) {
xArgSB.AppendFormat("\"{0}\" ", arg);
}
xStartInfo.Arguments = xArgSB.ToString();
xStartInfo.RedirectStandardError = !xShellExecute;
xStartInfo.RedirectStandardOutput = !xShellExecute;
xStartInfo.UseShellExecute = xShellExecute;
var xProcess = Process.Start(xStartInfo);
xProcess.WaitForExit();
if (!xShellExecute) {
Console.WriteLine(xProcess.StandardError.ReadToEnd());
Console.WriteLine(xProcess.StandardOutput.ReadToEnd());
}
return xProcess.ExitCode;
} catch (Exception e) {
Console.WriteLine(e.Message);
return 0;
}
}
}
}