如何确定编译调试是否为“调试”;真“;在web.config中
本文关键字:调试 web config 何确定 是否 编译 | 更新日期: 2023-09-27 17:58:01
我在这里为一些应该很简单的东西画了一个空白。。。
我正在尝试做一些类似的事情:
<my:control runat="server" id="myid" Visible="<%= (is compilation debug mode?) %>" />
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>
或者,您可以使用ConfigurationManager
或XElement
,从代码中解析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