我正在用C#编写一个 checkout ,构建和部署应用程序,并且需要知道检测我对msbuild.exe的调用是否成功的最佳方法。我尝试使用该过程中的错误代码,但是不确定是否总是正确的。

有没有办法(通过下面的代码)告诉我msbuild.exe是否成功完成?

try
{
    Process msbProcess = new Process();
    msbProcess.StartInfo.FileName = this.MSBuildPath;
    msbProcess.StartInfo.Arguments = msbArguments;
    msbProcess.Start();
    msbProcess.WaitForExit();

    if (msbProcess.ExitCode != 0)
    {
        //
    }
    else
    {
        //
    }

    msbProcess.Close();
}
catch (Exception ex)
{
    //
}

最佳答案

据我所能确定的,当遇到错误时,MSBuild返回退出代码> 0。如果没有遇到任何错误,它将返回退出代码0。我从未见过退出代码为0的代码。

我在批处理文件中使用它:

msbuild <args>
if errorlevel 1 goto errorDone

在以这种方式使用它的四年中,我从来没有理由质疑这种方法的正确性。

MSDN论坛上的几个问题都问同样的事情。例如:http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/a4ae6b2b-9b1f-4e59-86b4-370f44d73a85。实际上,标准响应是“如果错误级别为0,则没有错误。”

08-05 16:19