尝试在运行控制台进程后获取StandardOutput

时间:2013-08-14 04:32:19

标签: c# .net console console-application

我可以使用以下C#代码运行控制台进程。目标也是收集此过程的所有输出:

System.Diagnostics.Process proc = new System.Diagnostics.Process();

proc.StartInfo.Arguments = commandLine;
proc.StartInfo.FileName = "signtool.exe";
proc.StartInfo.RedirectStandardOutput = true;

proc.StartInfo.UseShellExecute = false;

proc.Start();

if (proc.WaitForExit(10000))
{
    Debug.WriteLine(proc.StandardOutput.ReadToEnd());
}

我收到的是:

  

“完成添加额外商店\ r \ n”

但是当我从Windows命令行执行相同操作时,我得到了这个:

Done Adding Additional Store
SignTool Error: File not found: C:\SomeBadFile.exe

为什么我只使用我的代码获得第一行输出?

2 个答案:

答案 0 :(得分:2)

如果您没有查看Process.StandardError Property

,看到您丢失的行似乎是错误消息
  

当Process将文本写入其标准错误流时,该文本为   通常显示在控制台上。通过重定向StandardError   流,您可以操纵或抑制进程的错误输出。   例如,您可以过滤文本,以不同方式对其进行格式化或写入   输出到控制台和指定的日志文件。

答案 1 :(得分:1)

您是否尝试重定向并观看标准错误?这似乎可能是输出到错误流。