Is there an #IF DEBUG for Asp.net markup? Is there an #IF DEBUG for Asp.net markup? asp.net asp.net

Is there an #IF DEBUG for Asp.net markup?


<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>

Note that you cannot assign the same ID for those text boxes.

Also note that DEBUG is true when it is set so in web.config:

<compilation debug="true">


The close as I can get is:

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

This would give you problems if you wanted to have anything else in your Page_Load() event; the literal code above only works if the page/control has no code behind.

If I needed to do this, I would encapuslate the above code into a user control and include that control in the pages of interest.

My test user control looks like this:

<%@ 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> 


If you are trying to step through javascript or prefer to minify javascript when not debugging, I prefer this approach:

<% if (Debugger.IsAttached) { %>  <script src="jquery.js"></script><% } else { %>  <script src="jquery.min.js"></script><% } %>

I can easily step through code when I am debugging, otherwise I want the scripts to be minified. Be sure to include the following import:

<%@ Import Namespace="System.Diagnostics" %>

Moreover, it is nice to use the Web Essentials visual studio extension to bundle/minify your javascript files so that there is only one request made to the server for your scripts.