2008-11-03 9 views
3

Dans n'importe quel projet (non-web) .net, le compilateur déclare automatiquement les constantes DEBUG et TRACE, donc je peux utiliser la compilation conditionnelle pour, par exemple, gérer les exceptions différemment en mode débogage vs version.Comment puis-je vérifier si je suis dans une version de débogage ou de publication dans une application Web?

Par exemple:

#if DEBUG 
    /* re-throw the exception... */ 
#else 
    /* write something in the event log... */ 
#endif 

Comment puis-je obtenir le même comportement dans un projet ASP.net? Il semble que la section system.web/compilation de web.config soit ce dont j'ai besoin, mais comment vérifier par programmation? Ou suis-je mieux de déclarer moi-même une constante DEBUG et de la commenter dans les versions de release?

EDIT: Je suis sur VS 2008

+0

Juste pour clarifier: l'IDE (au moins ma version?) n'a pas l'option de déclarer les constantes DEBUG et TRACE sur un projet * web *! – Loris

Répondre

5

Regardez ConfigurationManager.GetSection() - cela devrait vous obtenir la plupart du chemin .. Cependant, je pense que vous êtes mieux changer juste entre le débogage et la libération des modes et de laisser la compilateur déterminer pour exécuter les instructions jointes "#if DEBUG".

#if DEBUG 
/* re-throw the exception... */ 
#else 
/* write something in the event log... */ 
#endif 

le fonctionnera au-dessus très bien, assurez-vous d'avoir au moins deux configurations de construction (clic droit sur le projet sur lequel vous travaillez et allez dans « Propriétés » il y a une section là-dedans sur Builds) - assurez-vous que l'une de ces constructions a le "define DEBUG" cochée et l'autre pas.

+0

Merci, ConfigurationManager.GetSection() est ce que je cherchais! – Loris

7

Pour ajouter ontop Andrews réponse, vous pouvez l'envelopper dans un procédé bien

public bool IsDebugMode 
{ 
    get 
    { 
#if DEBUG 
    return true; 
#else 
    return false; 
#endif 
    } 
} 
4

C'est ce que je fini par faire:

protected bool IsDebugMode 
{ 
    get 
    { 
     System.Web.Configuration.CompilationSection tSection; 
     tSection = ConfigurationManager.GetSection("system.web/compilation") as System.Web.Configuration.CompilationSection; 
     if (null != tSection) 
     { 
      return tSection.Debug; 
     } 
     /* Default to release behavior */ 
     return false; 
    } 
} 
Questions connexes