如何在调试时调试Debug.WriteLine()和在.NET / C#中以发布模式在Console.WriteLine()之间切换#

时间:2013-02-05 05:44:03

标签: c# .net

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

3 个答案:

答案 0 :(得分:4)

查看System.Diagnostics.Trace课程。

Trace包含类似于Debug和Console类的WriteLine()方法,并支持在运行时或通过配置文件附加/分离各种侦听器,例如ConsoleTraceListerDefaultTraceListner(用于调试),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调用。