以编程方式检测发布/debugging模式(.NET)

可能重复:
如何找出.NET程序集是否用TRACE或DEBUG标志编译

可能重复:
如何识别如果DLL是debugging或发布构build(在.NET中)

什么是以编程方式检查当前程序集是以“debugging”还是“发行”模式编译的最简单方法?

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

如果你想在debugging和发布版本之间编程不同的行为,你应该这样做:

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

或者如果你想对function的debugging版本进行一些检查,你可以这样做:

 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不会包含在发布版本中。

我希望这对你有用:

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