3

我很好奇 .NET 编译器的 debug 和 release 模式之间的区别是什么,并且遇到了这些关于debug 与 .NET中的 release以及release 行为与 debug 不同的原因的问题。到目前为止,我还没有过多关注这些编译器模式。现在我会的。

我的问题是,假设我使用的是测试框架(NUnit)和 TDD,如果我总是在发布模式下编译会遇到任何问题吗?

4

4 回答 4

5

您正在使用 TDD。你写你的测试。测试失败。您编写代码以通过测试。代码失败。您查看您编写的代码,看不出它失败的任何明显原因。您是否要进行更多推理或在调试器中启动测试(使用 TestDriven.Net)并逐步完成测试?也许我只是不够聪明,无法总是弄清楚为什么我的代码不起作用,但当我被难住时,我通常会做后者。

于 2008-12-06T22:02:54.810 回答
2

调试模式关闭了很多优化。这意味着当您获得堆栈跟踪时,它看起来更像原始代码。

于 2008-12-07T09:23:25.620 回答
1

调试和发布配置之间的一个非常显着的区别是,对标记为的方法的调用ConditionalAttribute只有在定义了关联的符号时才会被编译。Debug因此,如果您使用发布配置进行编译,则不会包含对类方法的调用。

这使您可以使用断言和将信息转储到控制台的代码来装饰您的代码,并且确信这些开销都不会出现在您的运输代码中。

此外,edit-and-continue 是一个非常有用的工具,它依赖于发布版本中省略的元信息。

于 2008-12-07T09:37:32.973 回答
0

用于调试。

就像 tvanfosson 所说,即使您通常不使用调试器(我知道我不使用),有时您也需要。

于 2008-12-06T22:16:19.353 回答