当我编译这个项目时,它在错误列表窗口中显示为400个错误,然后我去错误的站点,修复一些,数字表示120个错误,然后再修复一些,下一个编译报告如400再次.我可以看到错误列表窗口中出现了不同的文件,所以我认为编译器会在一定数量的错误之后中止?
如果是这样,这是什么原因?即使它们超过10K,它不应该收集项目中存在的所有错误?
解决方法
我一直在写一篇博客文章.
您可能只是针对报告的错误数量进行了一些硬编码的限制.您也可能会遇到一个更微妙和有趣的情况.
在命令行编译器和IDE编译器中尝试管理错误报告有很多启发式.两者都可以保持对用户的管理,并使编译器更加健壮.
简单来说,编译器的工作方式是尝试通过一系列的阶段获得程序,您可以在这里阅读:
http://blogs.msdn.com/b/ericlippert/archive/2010/02/04/how-many-passes.aspx
这个想法是,如果早期阶段出现错误,我们可能无法在没有(1)进入无限循环,(2)崩溃或(3)报告疯狂的“级联”错误的情况下成功完成后期阶段.那么会发生什么,你得到一个错误,你修复它,然后突然下一个编译阶段可以运行,它发现一堆更多的错误.
基本上,如果程序如此混乱,甚至无法验证有关其类和方法的基本事实,那么方法体不能可靠地给出错误.如果我们无法分析一个lambda体,那么我们无法将其转换成表达式树可靠地给出错误.等等;有很多情况下,后期阶段需要知道以前的阶段完成没有错误.
这个设计的最重要的一点是(1)首先得到最“根本”的错误,没有很多嘈杂,疯狂的级联错误,(2)编译器更强大,因为它不必尝试对语言的基本不变量被破坏的程序进行分析.当然,你的场景是不利的,你有五十个错误,你们全部修复,突然有五十个出现.