在.NET/C#中,如何在调试时的Debug.WriteLine()和发布模式下的Console.WriteLine()

本文关键字:WriteLine 布模式 模式 Console NET 调试 Debug | 更新日期: 2023-09-27 17:57:32

在我的C#代码中,我想将Debug.WriteLine()Console.WriteLine()包装成一个函数,这样它就可以在调试模式下针对调试窗口,在发布模式下针对控制台。实现这一目标的最佳方式是什么?我是C#的新手。谢谢

在.NET/C#中,如何在调试时的Debug.WriteLine()和发布模式下的Console.WriteLine()

查看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调用。