Détection par programme du mode Release / Debug (.NET)

Duplication possible:
Comment savoir si un assembly .NET a été compilé avec l’indicateur TRACE ou DEBUG

Duplication possible:
Comment identifier si la DLL est une version Debug ou Release (en .NET)

Quel est le moyen le plus simple de vérifier par programme si l’assembly en cours a été compilé en mode Débogage ou Version?

Boolean isDebugMode = false; #if DEBUG isDebugMode = true; #endif 

Si vous voulez programmer différents comportements entre les versions de débogage et de publication, vous devriez le faire comme ceci:

 #if DEBUG int[] data = new int[] {1, 2, 3, 4}; #else int[] data = GetInputData(); #endif int sum = data[0]; for (int i= 1; i < data.Length; i++) { sum += data[i]; } 

Ou si vous voulez faire certaines vérifications sur les versions de débogage des fonctions, vous pouvez le faire comme ceci:

 public int Sum(int[] data) { Debug.Assert(data.Length > 0); int sum = data[0]; for (int i= 1; i < data.Length; i++) { sum += data[i]; } return sum; } 

Le Debug.Assert ne sera pas inclus dans la version de publication.

J’espère que cela vous sera utile:

 public static bool IsRelease(Assembly assembly) { object[] atsortingbutes = assembly.GetCustomAtsortingbutes(typeof(DebuggableAtsortingbute), true); if (atsortingbutes == null || atsortingbutes.Length == 0) return true; var d = (DebuggableAtsortingbute)atsortingbutes[0]; if ((d.DebuggingFlags & DebuggableAtsortingbute.DebuggingModes.Default) == DebuggableAtsortingbute.DebuggingModes.None) return true; return false; } public static bool IsDebug(Assembly assembly) { object[] atsortingbutes = assembly.GetCustomAtsortingbutes(typeof(DebuggableAtsortingbute), true); if (atsortingbutes == null || atsortingbutes.Length == 0) return true; var d = (DebuggableAtsortingbute)atsortingbutes[0]; if (d.IsJITTrackingEnabled) return true; return false; }