我知道debug = true在任何生产服务器上都是坏事。
我目前正在使用一些来自第三方的dll,并且是在调试模式下编译的,并且想知道 - 在调试模式下,如果调试模式的DLL在debug = false的情况下在调试模式下会发生什么?
答案 0 :(得分:2)
在C#/ .NET中(与C ++ DLL不同),它通常不是问题。调试和发布几乎完全相同,没有内存管理问题(与C ++ DLL一样)。
以下内容来自jaybaz的blog:
人们通常认为有三件事是调试和调制之间的区别。发布。你需要决定你感兴趣的那个:
“DEBUG”预处理程序标志。可以使用“csc / define”在整个程序集/ netmodule上设置,也可以使用#define在整个文件上设置。
调试信息(pdb)。使用'csc / debug [+ | - ]'设置。它不会影响codegen,所以它真的不是很有趣。
优化。设置为'csc / optimize [+ | - ]'。在托管代码中,运行时中的JITter几乎完成了所有优化。生成的IL与此标志的差异非常小。 Whidbey C#编译器在这个标志上比以前的版本有更多不同,但它仍然不多。
答案 1 :(得分:1)
system.web / compilation配置元素的debug属性对已编译DLL的代码没有影响。
它只影响动态编译的代码,并对运行时产生一些其他影响(例如,如果debug = true,则忽略system.web / httpRuntime配置元素的executionTimeout元素。)
答案 2 :(得分:0)
如果在调试模式下编译AFAIK,编译器不会优化二进制数据,因此可以轻松调试。这可能会导致案件表现不佳。此外,编译器还为调试器的构建添加了额外的数据。
我假设你在谈论ASP.Net网站以及关于在调试模式和发布模式下编译的dll。