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