我正在使用 Visual Studio 2015 (v14) 的预览版编写一些 C#,我一直想知道后台编译器实际上是做什么的。根据我的理解,它会检查代码编辑器的状态,并且足够聪明,可以知道我何时停止编辑几毫秒,然后趁机编译它并显示错误/警告。
我认为,如果在大型代码库中编辑部分代码并且具有大量依赖项(许多其他部分依赖于该特定代码段),则后台编译器的编译时间将会增加。 但无论是上述情况还是只是一个简单的 hello world 控制台应用程序,编译时间几乎恒定,在我的机器上约为 2 秒。
显然编译器不会完全重新构建所有内容,但它是如何做到的呢?使用了 Roslyn API 的哪一部分?有没有一些文章解释这一点?已搜索但一无所获。
后台编译器使用 Roslyn 获取文档支持的语法树的语义模型,并运行 Roslyn 的诊断来报告错误和警告。
它不会触及依赖于您的文件的其他代码。