IsDebuggingEnabled和Debugger.IsAttached之间有什么区别

本文关键字:什么 区别 之间 IsAttached Debugger IsDebuggingEnabled | 更新日期: 2023-09-27 18:20:37

System.Web.HttpContext.Current.IsDebuggingEnabledSystem.Diagnostics.Debugger.IsAttached之间有什么区别吗?

如果是这样的话,除了一个只适用于web应用程序,而另一个适用于所有类型的项目之外,还有什么确切的区别?

IsDebuggingEnabled和Debugger.IsAttached之间有什么区别

HttpContext.IsDebuggingEnabled是关于web.config中的编译设置。Debugger.IsAttached定义是否实际有活动调试器在侦听来自web服务器的信息。

请参阅DotnetPerls上关于HttpContext.IsDebuggingEnabled:的解释

调试模式不是默认模式。。。如果未在Web.config中设置debug="true",则会在发布模式下编译网站。

关于为什么第一个"仅适用于web应用程序"的问题:web应用程序可以在运行时编译,而所有其他.NET产品都是预编译的。因此,如果生成是在调试或发布模式下完成的,则可以在web.config中进行定义。这是一个仅限ASP.NET的选项,因此该属性仅在此处可用。

作为对第二个问题的回答,为什么第一个选项仅适用于ASP.NET:Windows应用程序还有一种检查其生成状态的方法:检查DebuggableAttribute,如如何检查程序集是使用Debug或Release配置生成的?中所述?。

IsDebuggingEnabled指的是"调试模式",并不一定意味着实际附加了调试器。通过在web.config文件中设置<compilation debug="true">,可以将ASP.NET网站设置为调试模式。

当网站处于调试模式时,JIT优化不会应用于视图文件(.aspx、.cs.html等)中包含的代码以及任何运行时编译的代码隐藏文件或App_Code目录。还有其他影响。