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