5

我想在我的代码中添加一些打印语句来显示我的位置并将重要的值打印到控制台窗口。

我该怎么做,但随后可以为发布版本关闭它?

4

6 回答 6

16

System.Diagnostics.Debug.Print()当您切换到发布版本时,所有调用都将被删除。

于 2008-10-21T19:09:40.450 回答
4

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

这样做的好处是,如果您在发布环境中遇到无法在开发中重新创建的问题,您可以在发布环境中重新打开日志记录。

[编辑] FWIW,我发现现在我使用测试驱动开发,我做的调试日志少了很多。我的大部分日志记录都是警告/错误类型。

于 2008-10-21T19:10:32.213 回答
3

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

于 2008-10-21T19:10:17.173 回答
1

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

用于Debug.Write/WriteLine将调试消息写入日志文件。(然后到输出窗口。)Debug.Assert嗯,几乎无处不在。Debug如果您没有在代码中定义 DEBUG 符号,则在编译之前使用该类编写的所有代码都将被删除 - 默认情况下,这是在 Debug 和 Release 配置选项中完成的。

用于Trace.Write/WriteLine编写跟踪消息。这些方法在功能上等同于 Debug 类的方法;不同之处在于,如果您未在代码中定义 TRACE 符号,它们将被删除。

Debug 和 Trace 类还具有其他类的整体略显繁琐的基础结构,例如TextWriterTraceListener,它允许您做一些漂亮的事情,例如将跟踪日志的输出从磁盘上的本地文件更改为 Web 服务(或什么都没有)通过编辑应用程序配置文件。我最喜欢的技巧是实现TextWriter可以将文本写入 a 的 a TextBox,并使用它将所有调试和跟踪输出重定向到 UI。

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

我发现一般来说,如果我构建自己的静态类来包装Trace方法,我会更开心。这让我可以通过设置我的类的属性来执行诸如在 UI 中打开和关闭跟踪之类的操作Trace

最后:如果您需要在每个方法开始和结束时对您的应用程序执行类似跟踪之类的操作,那么可以使用神奇的 PostSharp 工具。

于 2008-10-21T19:43:05.157 回答
0

我使用:System.Console.WriteLine()

#if DEBUG
  System.Console.WriteLine("Message");
#endif 
于 2008-10-21T19:37:49.770 回答
0

您还可以查看面向方面的编程解决方案。他们在这种事情上做得非常好。将 PostSharp 视为一个很好的实现。他们的示例代码通常包含一个您正在寻找的示例。

于 2008-10-21T19:59:16.263 回答