Search code examples
c#.netdebuggingconsole

Capturing console output from a .NET application (C#)


How do I invoke a console application from my .NET application and capture all the output generated in the console?

(Remember, I don't want to save the information first in a file and then relist as I would love to receive it as live.)


Solution

  • This can be quite easily achieved using the ProcessStartInfo.RedirectStandardOutput property. A full sample is contained in the linked MSDN documentation; the only caveat is that you may have to redirect the standard error stream as well to see all output of your application.

    Process compiler = new Process();
    compiler.StartInfo.FileName = "csc.exe";
    compiler.StartInfo.Arguments = "/r:System.dll /out:sample.exe stdstr.cs";
    compiler.StartInfo.UseShellExecute = false;
    compiler.StartInfo.RedirectStandardOutput = true;
    compiler.Start();    
    
    Console.WriteLine(compiler.StandardOutput.ReadToEnd());
    
    compiler.WaitForExit();