如何确定编译调试是否为“调试”;真“;在web.config中

本文关键字:调试 web config 何确定 是否 编译 | 更新日期: 2023-09-27 17:58:01

我在这里为一些应该很简单的东西画了一个空白。。。

我正在尝试做一些类似的事情:

    <my:control runat="server" id="myid" Visible="<%= (is compilation debug mode?) %>" />

如何确定编译调试是否为“调试”;真“;在web.config中

HttpContext.IsDebuggingEnabled属性:

using System.Web;
if (HttpContext.Current.IsDebuggingEnabled) { /* ... */ }

来自文件:

获取一个值,该值指示当前HTTP请求是否处于调试模式[…]如果请求处于调试模式,则为true;否则为false

这将为您获取<system.web>节组中的<compilation>元素:

using System.Web.Configuration ;
. . .
CompilationSection compilationSection = (CompilationSection)System.Configuration.ConfigurationManager.GetSection(@"system.web/compilation") ;
. . .
// check the DEBUG attribute on the <compilation> element
bool isDebugEnabled = compilationSection.Debug ;

轻松!

<my:control runat="server" id="myid" Visible="<%= HttpContext.Current.IsDebuggingEnabled %>" />

请参阅http://msdn.microsoft.com/en-us/library/system.web.httpcontext.isdebuggingenabled%28v=vs.90%29.aspx

或http://www.west-wind.com/weblog/posts/2007/Jan/19/Detecting-ASPNET-Debug-mode下面是富有成效的反馈。

我打赌你可以让它与一起工作

#if DEBUG
#endif 

ASPX页面中的代码位,而不是代码隐藏(这是一个单独的编译)。

类似于:

<script runat="server" language="C#">
  protected Page_Load() {
#if DEBUG
     myid.Visible = true;
#else
     myid.Visible = false;
#endif
  }
</script>

或者,您可以使用ConfigurationManagerXElement,从代码中解析web.config并查找属性。

例如:

var xml = XElement.Load("path-to-web.config");
bool isDebug = (bool)xml.Descendants("compilation").Attribute("debug");

在您的代码中,您可以使用IFDEBUG预处理器指令来设置可见性属性:

http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

Phil Haack关于这个的好文章:

http://haacked.com/archive/2007/09/16/conditional-compilation-constants-and-asp.net.aspx#51205