34 votes

Existe-t-il un balisage #IF DEBUG pour Asp.net?

Puis-je faire quelque chose comme ça dans le balisage d'une page asp.net, basé sur le paramètre "Définir la constante DEBUG"?

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

59voto

algiecas Points 1497
 <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>
 

Notez que vous ne pouvez pas attribuer le même ID à ces zones de texte.

Notez également que DEBUG est vrai lorsqu'il est défini ainsi dans web.config:

 <compilation debug="true">
 

6voto

jrcs3 Points 2442

La fin que je peux obtenir est:

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

Cela vous poserait des problèmes si vous vouliez avoir autre chose dans votre événement▶Load (); le code littéral ci-dessus ne fonctionne que si la page / le contrôle n'a pas de code derrière.

Si je devais le faire, j'encapsulerais le code ci-dessus dans un contrôle utilisateur et j'inclurais ce contrôle dans les pages d'intérêt.

Mon contrôle utilisateur de test ressemble à ceci:

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

6voto

ROFLwTIME Points 2223

Si vous essayez d'étape à l'aide de javascript, ou préférez minifier javascript lorsqu'il n'est pas de débogage, je préfère cette approche:

<% if (Debugger.IsAttached) { %>

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

<% } else { %>

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

<% } %>

Je peux facilement le code pas à pas quand je suis débogage, sinon je veux les scripts pour être minimisé. Assurez-vous d'inclure d'importation suivantes:

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

En outre, il est agréable à utiliser sur le Web Essentials extension de visual studio pour bundle/minifier vos fichiers javascript ainsi qu'il existe une seule requête faite au serveur pour vos scripts.

0voto

jcollum Points 10236

Que diriez-vous d'utiliser un littéral, puis d'utiliser #if DEBUG dans votre code-behind pour injecter du HTML pour votre zone de texte dans le littéral? Il existe également des blocs de code directs dans ASP.NET mais je ne sais pas s'ils traitent des instructions #if; ceux-ci semblent être réservés au compilateur C #.

0voto

GFoley83 Points 1423

Ceci est une erreur:

 <compilation debug="true">
 

@ algiecas : Définir le débogage sur true ou flase dans le web.config ne fait aucune différence. Cela dépend uniquement si le projet a été compilé comme "Debug" ou non:

Mode de débogage activé - notez que le code de la clause else est effacé lorsque le mode de débogage est sélectionné:

http://i.imgur.com/1pGT6.png

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X