我很好奇.NET编译器的调试和发布模式之间的区别是什么,并且遇到了关于debug vs release in .NET和reasons that release will behave differently than debug的这些问题。到目前为止,我真的没有太多关注这些编译器模式。现在我会。
我的问题是,假设我使用的是测试框架(NUnit)和TDD,如果我只是总是在发布模式下编译,我会遇到任何问题吗?
答案 0 :(得分:5)
你正在使用TDD。你写下你的考试。测试失败。您编写代码以通过测试。代码失败了。你看看你写的代码,看不出它失败的任何明显原因。您是否在调试器中进行了更多推理或启动测试(使用TestDriven.Net)并逐步完成测试?也许我只是不够聪明,总是弄清楚为什么我的代码不起作用,但是当我被困住时,我通常会做后者。
答案 1 :(得分:2)
调试模式会关闭许多优化。这意味着当您获得堆栈跟踪时,它看起来更像原始代码。
答案 2 :(得分:1)
调试和发布配置之间的一个非常显着的区别是,只有在定义了相关符号时才会编译对标有ConditionalAttribute
的方法的调用。因此,如果使用发布配置进行编译,则不会包含对Debug
类方法的调用。
这样,您就可以通过将信息转储到控制台的断言和代码来装扮您的代码,并确信这些开销不会出现在您的运输代码中。
此外,编辑并继续是一个非常有用的工具,它依赖于发布版本中省略的元信息。
答案 3 :(得分:0)
用于调试。
就像tvanfosson所说,即使你通常不使用调试器(我知道我没有),有时你需要。