我很好奇.NET編譯器的調試和發佈模式之間有什麼區別,並且遇到了有關debug vs release in .NET和reasons that release will behave differently than debug的這些問題。到目前爲止,我真的沒有太注意這些編譯模式。現在我會。我爲什麼要使用.NET編譯器的調試模式?
我的問題是,假設我使用測試框架(NUnit)和TDD,如果我總是在發佈模式下編譯,是否會遇到任何問題?
我很好奇.NET編譯器的調試和發佈模式之間有什麼區別,並且遇到了有關debug vs release in .NET和reasons that release will behave differently than debug的這些問題。到目前爲止,我真的沒有太注意這些編譯模式。現在我會。我爲什麼要使用.NET編譯器的調試模式?
我的問題是,假設我使用測試框架(NUnit)和TDD,如果我總是在發佈模式下編譯,是否會遇到任何問題?
您正在使用TDD。你寫你的測試。測試失敗。你編寫代碼來通過測試。代碼失敗。你看看你編寫的代碼,看不到任何明顯的失敗原因。你有更多的理由或者在調試器中啓動測試(使用TestDriven.Net)並逐步完成測試?也許我只是不夠聰明,不能總是弄清楚爲什麼我的代碼不起作用,但當我被困時,我通常會做後者。
用於調試。
就像tvanfosson說的那樣,即使你通常不使用調試器(我知道我沒有),有時你需要。
調試模式會關閉很多優化。這意味着當你獲得堆棧跟蹤時,它將看起來更像原始代碼。
調試和發佈配置之間的一個相當顯着的區別在於,如果定義了關聯的符號,則僅對編號爲ConditionalAttribute
的方法的調用進行編譯。因此,如果使用發佈配置進行編譯,則不會包含對Debug
類的方法的調用。
這使您可以使用斷言和代碼將信息轉儲到控制檯,然後確信沒有任何開銷會出現在您的送貨代碼中。另外,編輯和繼續是一個非常有用的工具,它依賴於從發佈版本中省略的元信息。
你是說在發佈模式下運行*還是在發佈模式下編譯*他們是非常不同的。 – 2008-12-06 21:55:54