最重要的是,在调试模式下没有优化,而在发布模式下有优化.这一点很重要,因为编译器非常先进,可以对您的代码进行一些相当棘手的低级改进.因此,您的代码中的某些行可能会完全没有任何指令,或者可能会完全混淆.循序渐进的调试是不可能的.此外,局部变量通常以神秘的方式进行优化,因此手表和QuickWatch通常无法工作,因为变量被"优化"了.还有许多其他的优化.有空试着调试优化的.NET代码,您就会明白.
另一个关键区别是,由于这一点,默认版本设置不需要生成大量调试符号信息.这就是问题所在.您可能已经注意到了PDB文件,它允许调试器找出哪些汇编指令与哪一行代码对应,等等.