2009-05-20 8 views
1

Comment déterminer si mon application a été compilée en tant que "version" au lieu de "déboguer"? Je suis allé à VS 2008 Propriétés du projet> Construire et définir la configuration de déboguer à libérer mais je n'ai remarqué aucun changement? C'est un projet ASP.NET.Sortie d'Asp.net build vs debug build

+0

questions Stackoverflow des similaires, une question, et beaucoup, beaucoup de réponses différentes: http://stackoverflow.com/questions/654450/programatically- détection-libération-debug-mode-net http://stackoverflow.com/questions/798971/how-to-idenfiy-if-the-dll-is-debug-or-release-build-in-net http://stackoverflow.com/questions/194616/how-to-tell-if-net-app-was-compiled-in-debug-or-release-mode http://stackoverflow.com/questions/50900/best-way-to-detect-a-release-build-from-a-debug-build-net http://stackoverflow.com/questions/890459/ asp-net-version-build-vs-debug-build – Kiquenet

Répondre

1

Pour un dans le fichier Web.config, le débogage sera défini sur true, mais vous pouvez également le définir dans une application de version.

Dans debug définit cependant comme DEBUG sont réglés, il est donc simple:

bool is_debug; 

#ifdef DEBUG 
is_debug = true; 
#else 
is_debug = false; 
#endif 
+0

Le débogage est défini dans Web.config uniquement si vous le définissez explicitement, ou vous appuyez sur F5 pour exécuter le site Web et lui permettre de modifier le fichier de configuration. Ce paramètre n'est pas un indicateur de ce que * build configuration * est sélectionné. – Gromer

+0

Etes-vous sûr? Ahh ben nm là-dessus alors: / – Lloyd

3

Si vous voulez savoir si le dll a été construit en mode débogage, avec les attributs de débogage, alors votre meilleur pari est la réflexion.

à partir des « How to tell if an existing assembly is debug or release »:

Assembly assembly = Assembly.GetAssembly(GetType()); 
bool debug = false; 
foreach (var attribute in assembly.GetCustomAttributes(false)){ 
    if (attribute.GetType() == typeof(System.Diagnostics.DebuggableAttribute)){ 
    if (((System.Diagnostics.DebuggableAttribute)attribute) 
     .IsJITTrackingEnabled){ 
     debug = true; 
     break; 
    } 
    } 
} 

Cela aura l'assemblée qui appelle ce code (en effet lui-même), puis définissez le booléen de débogage true si l'ensemble a été compilé en mode débogage, sinon c'est faux.

Cela pourrait facilement être déposé dans une application de la console (comme dans l'exemple lié), puis vous passez dans le chemin de la DLL/EXE que vous voulez vérifier. Vous chargez l'assemblage d'un chemin comme celui-ci:

Assembly assembly = 
    Assembly.LoadFile(System.IO.Path.GetFullPath(m_DllPath.Text));