static BuildResult ParseOutput(string stdout, string stderr) { BuildResult result = new BuildResult(); StringBuilder compilerOutput = new StringBuilder(); bool typeLoadException = false; foreach (string s in new string[] { stdout, stderr }) { StreamReader sr = File.OpenText(s); while (true) { if (typeLoadException) { compilerOutput.Append(sr.ReadToEnd()); break; } string curLine = sr.ReadLine(); compilerOutput.AppendLine(curLine); if (curLine == null) { break; } curLine = curLine.Trim(); if (curLine.Length == 0) { continue; } if (curLine.StartsWith("Unhandled Exception: System.TypeLoadException") || curLine.StartsWith("Unhandled Exception: System.IO.FileNotFoundException")) { result.ClearErrors(); typeLoadException = true; } BuildError error = CreateErrorFromString(curLine); if (error != null) { result.Append(error); } } sr.Close(); } if (typeLoadException) { Regex reg = new Regex(@".*WARNING.*used in (mscorlib|System),.*", RegexOptions.Multiline); if (reg.Match(compilerOutput.ToString()).Success) { result.AddError("", 0, 0, "", "Error: A referenced assembly may be built with an incompatible CLR version. See the compilation output for more details."); } else { result.AddError("", 0, 0, "", "Error: A dependency of a referenced assembly may be missing, or you may be referencing an assembly created with a newer CLR version. See the compilation output for more details."); } } result.CompilerOutput = compilerOutput.ToString(); return(result); }