在Release版本中获取System.Diagnostics.Debug.Assert()的行为?

时间:2014-01-16 04:14:05

标签: c# assert

我希望使用与Debug.Assert()相同的行为检测并报告特定情况下的错误,但是在发布版本中。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

您应该可以使用Trace.Assert()

来自MSDN

  

如果要在发布版本中执行断言,请使用Trace.Assert方法。 Debug.Assert方法仅适用于调试版本。

答案 1 :(得分:1)

您可以在仍启用发布优化的情况下手动添加DEBUG常量。

在项目设置的“构建”选项卡中,只需选中启用DEBUG常量的框。

enter image description here

这允许所有具有[ConditionalAttribute("DEBUG")](如Assert())的函数在编译的程序中仍然有效。

编辑: Grant's answer is even better,如果可能,请使用Trace.Assert。如果定义了常量TRACE,则该函数将触发,并且在发布版本中默认定义它。这将确保您不会在代码中启用任何其他使用#if DEBUG[ConditionalAttribute("DEBUG")]的代码时出现任何无法预料的副作用。

答案 2 :(得分:0)

你不能打开跟踪并执行跟踪吗?您可以在发布模式下使用条件跟踪。此外,您可以使用log4net

实现一些有条件的日志记录