visual studio net generate entre diferencia debug create compile .net debugging release

.net - net - visual studio 2017 generate release



Detección mediante programación del modo de liberación/depuración(.NET) (2)

Espero que esto te sea útil:

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

Posible duplicado:
Cómo averiguar si se compiló un ensamblado .NET con la marca TRACE o DEBUG

Posible duplicado:
Cómo identificar si el DLL es Debug o Release build (en .NET)

¿Cuál es la forma más fácil de comprobar mediante programación si el ensamblado actual se compiló en modo Depuración o Versión?


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

Si desea programar un comportamiento diferente entre versiones de depuración y liberación, debe hacerlo así:

#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]; }

O si quiere hacer ciertas comprobaciones en las versiones de depuración de funciones, puede hacerlo así:

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

Debug.Assert no se incluirá en la versión de lanzamiento.