【问题标题】:Get the behavior of System.Diagnostics.Debug.Assert() in a Release build?在发布版本中获取 System.Diagnostics.Debug.Assert() 的行为?
【发布时间】:2014-02-04 20:32:37
【问题描述】:

我想检测和报告特定情况下的错误,使用与Debug.Assert() 相同的行为,但在发布版本中。我该怎么做?

【问题讨论】:

  • 无意冒犯,但是“前微软 C# 团队成员”(您的个人资料描述)怎么不知道 Trace.Assert
  • 我不知道的事情清单非常非常长。
  • 请参阅:stackoverflow.com/questions/3021538/… 虽然意图完全相反,但答案应该会为您提供所需的线索。

标签: c# assert


【解决方案1】:

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

来自MSDN

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

【讨论】:

  • 比我的回答还要好,我不知道Trace.Assert
【解决方案2】:

您可以在启用发布优化的同时手动添加 DEBUG 常量。

在项目设置的 Build 选项卡中,只需选中启用 DEBUG 常量的复选框。

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

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

【讨论】:

    【解决方案3】:

    您不能打开跟踪并执行跟踪吗?您可以在发布模式下使用条件跟踪。此外,您可以使用 log4net 实现一些有条件的日志记录

    【讨论】:

      猜你喜欢
      • 2017-11-21
      • 2010-10-21
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 2019-02-09
      相关资源
      最近更新 更多