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);
        }