Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在debug=false的web应用程序中,处于调试模式的DLL会发生什么情况?_C#_.net_Dll_Debugging - Fatal编程技术网

C# 在debug=false的web应用程序中,处于调试模式的DLL会发生什么情况?

C# 在debug=false的web应用程序中,处于调试模式的DLL会发生什么情况?,c#,.net,dll,debugging,C#,.net,Dll,Debugging,我知道debug=true在任何生产服务器上都是一件坏事 我目前使用的是来自第三方的一些DLL,并且是在调试模式下编译的,并且想知道,在调试模式中,Dell在Debug=false中的DLL中发生了什么?< P>在C./.NET中(与C++ + DLL不同),通常不是问题。调试和发布几乎是相同的,没有内存管理问题(如C++ DLL)。 以下是jaybaz的: 人们通常认为调试和发布之间的区别有三点。您需要决定您感兴趣的是: “调试”预处理器标志。可以使用“csc/define”在整个程序集/网络

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

我目前使用的是来自第三方的一些DLL,并且是在调试模式下编译的,并且想知道,在调试模式中,Dell在Debug=false中的DLL中发生了什么?

< P>在C./.NET中(与C++ + DLL不同),通常不是问题。调试和发布几乎是相同的,没有内存管理问题(如C++ DLL)。 以下是jaybaz的:

人们通常认为调试和发布之间的区别有三点。您需要决定您感兴趣的是:

“调试”预处理器标志。可以使用“csc/define”在整个程序集/网络模块上设置,也可以使用#define在整个文件上设置

调试信息(pdb)。设置为“csc/debug[+|-]”。它不影响codegen,所以它真的不是很有趣

优化。设置为“csc/优化[+|-]”。在托管代码中,运行时的抖动几乎完成了所有优化。此标志生成的IL差异非常小。Whidbey C#编译器在这个标志上与以前的版本相比有更多的不同,但仍然不多

< C++ > .NET中(与C++ +DLL不同)一般不成问题。调试和发布几乎是相同的,没有内存管理问题(如C++ DLL)。 以下是jaybaz的:

人们通常认为调试和发布之间的区别有三点。您需要决定您感兴趣的是:

“调试”预处理器标志。可以使用“csc/define”在整个程序集/网络模块上设置,也可以使用#define在整个文件上设置

调试信息(pdb)。设置为“csc/debug[+|-]”。它不影响codegen,所以它真的不是很有趣

优化。设置为“csc/优化[+|-]”。在托管代码中,运行时的抖动几乎完成了所有优化。此标志生成的IL差异非常小。Whidbey C#编译器在这个标志上与以前的版本相比有更多的不同,但仍然不多


如果在调试模式下编译,则AFAIK编译器不会优化二进制数据,从而使调试器变得容易。在某些情况下,这可能会导致性能不佳。此外,编译器还为调试器的生成添加了额外的数据


我假设您谈论的是ASP.Net网站以及在调试模式下编译的dll与在发布模式下编译的dll。

AFAIK如果在调试模式下编译,编译器不会优化二进制数据,从而使调试器更容易。在某些情况下,这可能会导致性能不佳。此外,编译器还为调试器的生成添加了额外的数据


我假设您谈论的是ASP.Net网站以及在调试模式下编译的dll与在发布模式下编译的dll。

system.web/compilation配置元素的debug属性对编译的dll的代码没有影响


它只影响动态编译的代码,并且对运行时有一些其他影响(例如,如果debug=true,则忽略system.web/httpRuntime配置元素的executionTimeout元素)。

system.web/compilation配置元素的debug属性对已编译DLL的代码没有影响


它只影响动态编译的代码,并对运行时有一些其他影响(例如,如果debug=true,则忽略system.web/httpRuntime配置元素的executionTimeout元素)。

在.NET中,大多数优化留给JIT进行,但也有一些优化(通常针对大小)在.NET中,大多数优化都留给JIT进行,但是有一些优化(通常是大小优化)并没有按照您所说的那样进行,以使调试更容易。