2008-10-21 62 views
4

我想在代码中添加一些打印语句以显示我的位置并将重要值输出到控制台窗口。禁用调试输出

我该怎么做,但能够在发布版本中关闭它?

回答

14

当您切换到发行版时,所有对System.Diagnostics.Debug.Print()的呼叫都将被删除。

+0

如果您希望在发布和调试中使用语句,还可以使用Trace。 – 2008-10-21 19:15:09

3

查看System.Diagnostics.Debug和System.Diagnostics.Trace类。

4

使用Log4net在调试级别以发布和警告或生产错误级别进行日志记录。

受益于此,如果您在开发环境中遇到问题而无法重新创建,则可以在发布环境中重新开启日志记录。

[编辑] FWIW,我发现我现在做一个LOT更少的调试日志记录,现在我使用测试驱动开发。我的大部分日志都是警告/错误变化。

+0

您可以使用Trace来代替调试 – 2008-10-21 19:14:38

1

调试和跟踪相关但不同的活动。 System.Diagnostics命名空间同时支持它们。

使用Debug.Write/WriteLine将调试消息写入日志文件。 (并输出到窗口。)使用Debug.Assert,几乎无处不在。如果您未在代码中定义DEBUG符号,则在编译前删除使用Debug类编写的所有代码 - 默认情况下,Debug和Release配置的选项会执行该代码。使用Trace.Write/WriteLine编写跟踪消息。这些方法在功能上等同于Debug类的方法;不同之处在于如果您未在代码中定义TRACE符号,它们将被删除。

调试和跟踪类也有其他类的基础设施,如TextWriterTraceListener,允许你做一些漂亮的事情,比如将跟踪日志的输出从磁盘上的本地文件更改为Web服务(或什么都不),只需编辑应用程序配置文件。我最喜欢的技巧是实现一个TextWriter,它可以将文本写入TextBox,并使用它将所有调试和跟踪输出重定向到UI。

您还可以在应用配置文件中设置WriteIfWriteLineIf方法所尊重的标志,但根据我的经验,这些标志相当笨拙。

我发现,一般来说,如果我建立自己的静态类来包装Trace方法,我会更开心。这可以让我做一些事情,比如只需设置我的Trace类的属性即可在UI中打开和关闭跟踪。

最后:如果你需要的仪器您的应用程序做类似的东西跟踪时,每个方法的开始和结束,使用该工具是化腐朽为神奇PostSharp。

0

您还可以查看面向方面编程解决方案。他们确实做得很好。看看PostSharp是一个很好的实现。他们的示例代码通常包含您正在寻找的示例。