【问题标题】:Remove Log before release System.Diagnostics在发布 System.Diagnostics 之前删除日志
【发布时间】:2013-03-29 14:42:31
【问题描述】:

要记录输出,我使用以下代码。

 System.Diagnostics.Debug.WriteLine("Hello");

现在,我们始终建议您在提交应用之前删除此类日志。

所以,在我们提交它以供发布或隐式完成之前,我们必须删除这些行。

有没有其他更好的方法在 C# 中记录输出,它在发布时将日志记录删除到控制台。我看到 Log4Net 就是其中之一。

【问题讨论】:

    标签: c# logging windows-phone-8


    【解决方案1】:

    System.Diagnostics.Debug 类上的所有方法都有ConditionalAttribute,因此在大多数编译器下,它们不会被编译到发布版本中(除非您在发布版本中定义了 DEBUG 属性)。 1

    这对于 Visual Studio 中的编译器来说当然是正确的。

    您关于 log4Net 的第二个问题实际上是相反的,如果您决定开始使用 log4Net,请注意一些事项 - log4Net 调试调用包含在调试版本中,如果您将记录器设置为调试跟踪级别,则会发出(通常通过运行时配置完成)。


    1. MSDN 页面实际上(IMO)有点不清楚,但这些 SO 帖子与我的解释一致:

    System.Diagnostics.Debug.WriteLine in production code

    C# Do Debug statements get compiled out when running in Release mode?

    【讨论】:

      【解决方案2】:

      你可以使用预处理指令:

      #if DEBUG
          System.Diagnostics.Debug.WriteLine("Hello");
      #endif
      

      当您在 Release 构建配置中构建应用程序时,将跳过该行。

      【讨论】:

      • 谢谢。但是如果我用过的地方有100个,我需要到处添加这个指令。
      • 你确定吗?我一直认为,由于 [ConditionalAttribute],Debug 类的方法不会编译到 Release 版本中。这篇文章似乎在说同样的话stackoverflow.com/questions/1600985/…
      • @DavidHall 没错。 IDE 隐式删除它以进行发布。我确实检查了文档,但我是这种语言的新手,所以错过了这么小的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多