调试模式下DLL在debug = false的Web应用程序中会发生什么?

时间:2009-06-29 10:38:18

标签: c# .net dll debugging

我知道debug = true在任何生产服务器上都是坏事。

我目前正在使用一些来自第三方的dll,并且是在调试模式下编译的,并且想知道 - 在调试模式下,如果调试模式的DLL在debug = false的情况下在调试模式下会发生什么?

3 个答案:

答案 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。