C# 禁用调试输出

C# 禁用调试输出,c#,.net,debugging,console,C#,.net,Debugging,Console,我想在代码中加入一些print语句来显示我的位置,并将重要值打印到控制台窗口 如何做到这一点,然后才能在发布版本中将其关闭?切换到发布版本时,将删除对的所有调用。查看System.Diagnostics.Debug和System.Diagnostics.Trace类。在发布版本中与调试级别的日志记录一起使用,并在生产中与警告或错误级别一起使用 这样做的好处是,如果存在无法在开发中重新创建的问题,可以在发布环境中重新打开日志记录 [编辑]FWIW,我发现现在我使用测试驱动开发,我做的调试日志记录少

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


如何做到这一点,然后才能在发布版本中将其关闭?

切换到发布版本时,将删除对的所有调用。

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

在发布版本中与调试级别的日志记录一起使用,并在生产中与警告或错误级别一起使用

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

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

我使用:


调试和跟踪是相关但不同的活动。
System.Diagnostics
名称空间支持这两种方法

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

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

Debug和Trace类还有一整套稍微麻烦的其他类基础结构,如
TextWriterTraceListener
,它允许您只需编辑应用程序配置文件,即可将跟踪日志的输出从磁盘上的本地文件更改为web服务(或不更改)。我最喜欢的技巧是实现一个
TextWriter
,它可以将文本写入
TextBox
,并使用它将所有调试和跟踪输出重定向到UI

您还可以在app config文件中设置
WriteIf
WriteLineIf
方法所需的标志,但根据我的经验,这些标志会变得非常笨拙

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


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

你也可以研究面向方面的编程解决方案。他们在这方面做得很好。将PostSharp视为一个很好的实现。他们的示例代码通常包含一个您正在查找的示例。

您可以使用Trace而不是DebugI日志来实现这一点--想知道错误的情况--因此调试日志对我来说更有效。如果您希望在release和debug中使用语句,也可以使用Trace。
#if DEBUG
  System.Console.WriteLine("Message");
#endif