Как получить ошибки Msbuild, запущенные процессом? - PullRequest
0 голосов
/ 15 января 2019

Я создаю небольшую программу, которая запускает msbuild для компиляции приложения. Я использую процесс, но я не могу получить ошибки, которые генерируются. Если я запускаю msbuild from cmd, сообщения отображаются красным, я понимаю, что эти ошибки должны быть обнаружены событием ErrorDataReceived, но оно не работает

    process = new Process();
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.OutputDataReceived += new DataReceivedEventHandler(OutputHandlerData);
    process.ErrorDataReceived += new DataReceivedEventHandler(OutputHandlerError);
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.FileName = "test.bat";
    process.Start();
    process.BeginOutputReadLine();
    process.BeginErrorReadLine();

    private void OutputHandlerError(object sendingProcess, DataReceivedEventArgs outLine)
    {
        log = log + outLine.Data + "\n";
        WriteInLog(log);
    }

        private void OutputHandlerData(object sendingProcess, DataReceivedEventArgs outLine)
    {
        if (outLine.Data != null)
        {
            if (outLine.Data.Contains("can not find"))
            {
                log = log + outLine.Data;
                WriteInLog(log);
            }
        }
    }

1 Ответ

0 голосов
/ 16 января 2019

Наконец, я изменил подробный текст команды MSBuild, и теперь я могу печатать все предложения с событием OutputDataReceived, не блокируя приложение, потому что появляется гораздо меньше информации. Я также сохраняю файл с дополнительной информацией о компиляции.

MSBuild.exe -v:q -clp:ErrorsOnly;NoSummary -fl -flp:logfile=MyProjectOutput.log;verbosity=normal ..\MySolution.sln

-v: q -> многословно = тихо
-clp: ErrorsOnly; NoSummary -> Показать только ошибки
-fl -flp: logfile = MyProjectOutput.log; verbosity = normal -> Создает файл MyProjectOutput.log для сохранения журнала с подробностью = normal (отображать ошибки, предупреждения, сообщения высокой важности, сообщения обычной важности)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...