是否有针对Asp.net标记的#IF DEBUG?

Sis*_*utl 34 asp.net debugging

基于"定义DEBUG常量"设置,我可以在asp.net页面的标记中执行类似的操作吗?

#IF (DEBUG) THEN
  <asp:TextBox ID="TextBox1" runat="server">You're in debug mode</asp:TextBox>
#END IF
Run Code Online (Sandbox Code Playgroud)

alg*_*cas 59

<form runat="server">
 <% #if DEBUG %>
 <asp:TextBox ID="TextBox1" runat="server">You're in debug mode</asp:TextBox>
 <% #else %>
 <asp:TextBox ID="TextBox2" runat="server">Mmm... No, I think you're not in debug mode</asp:TextBox>
 <% #endif %>
</form>
Run Code Online (Sandbox Code Playgroud)

请注意,您无法为这些文本框分配相同的ID.

另请注意,在web.config中设置DEBUG时为true:

<compilation debug="true">
Run Code Online (Sandbox Code Playgroud)

  • @Guy`DEBUG`表示您是否正在使用调试版本(与发布版本/其他版本相对).我想你想要的是`Debugger.IsAttached`或`HttpContext.Current.IsDebuggingEnabled` - 如果从VS内部启动则为true,否则为false(除非你手动附加调试器) (3认同)

jrc*_*cs3 6

我能得到的结果是:

<asp:Literal id="isDebug" runat="server" />
<script runat="server">
    void Page_Load()
    {
#if DEBUG
        isDebug.Text = "You're in debug mode";
#endif
    }
</script> 
Run Code Online (Sandbox Code Playgroud)

如果你想在你的Page_Load()事件中有任何其他内容,这会给你带来问题; 上面的文字代码仅在页面/控件后面没有代码时才有效.

如果我需要这样做,我会将上面的代码包含在用户控件中,并将该控件包含在感兴趣的页面中.

我的测试用户控件如下所示:

<%@ Control Language="C#" AutoEventWireup="true"  %>
<asp:Literal id="isDebug" runat="server" />
<script runat="server">    
    void Page_Load()    
    {
#if DEBUG        
        isDebug.Text = "You're in debug mode";
#endif    
    }
</script> 
Run Code Online (Sandbox Code Playgroud)


ROF*_*IME 6

如果您尝试单步执行javascript或者在不调试时更喜欢缩小javascript,我更喜欢这种方法:

<% if (Debugger.IsAttached) { %>

  <script src="jquery.js"></script>

<% } else { %>

  <script src="jquery.min.js"></script>

<% } %>
Run Code Online (Sandbox Code Playgroud)

我在调试时可以轻松地逐步执行代码,否则我希望缩小脚本.请务必包含以下导入:

<%@ Import Namespace="System.Diagnostics" %>
Run Code Online (Sandbox Code Playgroud)

此外,最好使用Web Essentials visual studio扩展来捆绑/缩小您的javascript文件,以便只为服务器提供一个脚本请求.