我正在用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,则没有错误。”