在.NET/C#中,如何在调试时的Debug.WriteLine()和发布模式下的Console.WriteLine()
本文关键字:WriteLine 布模式 模式 Console NET 调试 Debug | 更新日期: 2023-09-27 17:57:32
在我的C#代码中,我想将Debug.WriteLine()
和Console.WriteLine()
包装成一个函数,这样它就可以在调试模式下针对调试窗口,在发布模式下针对控制台。实现这一目标的最佳方式是什么?我是C#的新手。谢谢
查看System.Diagnostics.Trace类。
Trace包括一个类似于Debug和Console类的WriteLine()方法,并支持在运行时或通过配置文件附加/分离各种侦听器,如ConsoleTraceLister、DefaultTraceListner(用于Debug)、TextWriterTraceListener(用于文件)、EventLogTraceListener,或者您可以创建用于写入数据库表或syslogd聚合器等位置的。
您可以将当前对Debug或Console的每次调用更改为使用Trace,只需设置要使用的侦听器即可。请注意,Trace方法缺少一些格式化功能,但我认为可配置的输出源远远弥补了这一点。
始终使用Debug.WriteLine并将这些行添加到程序的开头:
#if !DEBUG
var listeners = new TraceListener[] { new TextWriterTraceListener(Console.Out) };
Debug.Listeners.AddRange(listeners);
#endif
除了Joel的答案之外,另一个非常简单的解决方案是:
private void writeLine(String s)
{
#if DEBUG
Debug.WriteLine(s);
#else
Console.WriteLine(s);
#endif
}
这使用了预处理器指令,因此除非在Release模式下,否则不会写入控制台。注意,它有点多余,因为在Release构建过程中,即使没有预处理器指令,也会删除所有Debug
调用。