Owe*_*wen 3 c# resharper compilation
所以Jeff Atwood正确地抱怨Visual Studio没有执行后台编译,请参阅:http://www.codinghorror.com/blog/2007/05/c-and-the-compilation-tax.html
来自大多数来源的解决方案似乎是Reshaper,它会在您编写时逐步执行后台编译.这导致了他们伟大的实时重新分解技巧和错误检测.
但我不明白的是R#不断编译我的代码,为什么通过VS执行编译需要这么长时间(即Ctrl + Shift + B或类似代码).我的意思是,如果R#已经编译了我的代码那么为什么我需要重新编译?
我的假设当然是R#不会覆盖我的bin目录中的程序集,而是将编译结果保存在内存中.在这种情况下,编译成功时是否可以告诉R#简单地覆盖我的程序集?
我不知道"正确地抱怨" - 这是我不同意的意见:)
但是,VB.NET(可能还有Resharper c#)后台编译器实际上并没有编译完整的程序集 - 它们不能!如果你考虑一下,你工作时代码的自然状态是不可编译的!几乎每次按键都会使您的代码处于无效状态.想想这一行:
var x = new Something();
Run Code Online (Sandbox Code Playgroud)
当你键入它时,从键"v"到键")",你的代码是"错误的".或者,如果您正在引用尚未定义的方法,该怎么办?如果这个代码在另一个程序集需要的程序集中,你将如何编译第二个程序集,背景与否?
后台编译器通过将代码的小块编译成多个瞬态"程序集"来实现这一点,这些"程序集"实际上只是元数据持有者 - 实际上,他们并不关心代码的实际影响,就像定义,使用的符号等一样.当你最终点击构建时,仍然需要构建实际的完整程序集.
所以不,我不相信这是可能的,因为它们不是为了进行实际的完整编译而构建的 - 它们是为了检查代码并动态解释符号而构建的.