Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 读取运行进程的输出为空_C#_.net 4.0 - Fatal编程技术网

C# 读取运行进程的输出为空

C# 读取运行进程的输出为空,c#,.net-4.0,C#,.net 4.0,我试图运行一个编译应用程序的进程(一个旧的基本编译器)。我故意在我试图编译的应用程序中出现错误,以查看如何读取可能返回的任何输出消息,但我在e.Data中只看到null。有人能告诉我,我下面的代码中是否有试图读取输出或错误数据的错误 private static void RunProcess(string filename, string args) { try { var processStartInfo = new ProcessStartInfo();

我试图运行一个编译应用程序的进程(一个旧的基本编译器)。我故意在我试图编译的应用程序中出现错误,以查看如何读取可能返回的任何输出消息,但我在e.Data中只看到null。有人能告诉我,我下面的代码中是否有试图读取输出或错误数据的错误

private static void RunProcess(string filename, string args)
{
    try
    {
        var processStartInfo = new ProcessStartInfo();

        processStartInfo.FileName = filename;

        processStartInfo.Arguments = args;

        processStartInfo.UseShellExecute = false;

        processStartInfo.RedirectStandardOutput = true;

        processStartInfo.RedirectStandardError = true;

        var result = string.Empty;

        using (Process process = Process.Start(processStartInfo))
        {
            process.ErrorDataReceived += Process_ErrorDataReceived;

            process.OutputDataReceived += Process_OutputDataReceived;

            process.BeginOutputReadLine();

            process.BeginErrorReadLine();

            process.WaitForExit();

            Console.Write("Completed process with an exit code of: " + process.ExitCode.ToString() + Environment.NewLine);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

private static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Console.WriteLine(e.Data);
}

private static void Process_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
    Console.WriteLine(e.Data);
}

刚刚尝试执行
RunProcess(“cmd”,null)
,我可以看到进程输出。您确定要启动的进程(旧编译器)会写入标准输出吗?您能否从命令行启动编译器,将其输出重定向到文件,如
old_compiler parameters>build_log.txt
,并检查它是否工作?我这样做了,build_log.txt为空。我想我可以假设它不写入标准输出??