Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在.NET/C中调试时的Debug.WriteLine()和发布模式下的Console.WriteLine()之间切换#_C#_.net - Fatal编程技术网

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

C# 如何在.NET/C中调试时的Debug.WriteLine()和发布模式下的Console.WriteLine()之间切换#,c#,.net,C#,.net,在我的C#代码中,我想将Debug.WriteLine()和Console.WriteLine()打包成一个函数,以便它在调试模式下以调试窗口为目标,在发布模式下以控制台为目标。实现这一目标的最佳方式是什么?我是C#的新手。谢谢。看这节课 Trace包含一个WriteLine()方法,类似于Debug和Console类上的方法,并支持在运行时或通过配置文件附加/分离各种侦听器,例如,(for Debug),(for files),,或者您可以创建用于写入数据库表或syslogd聚合器等位置的方法

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

看这节课

Trace包含一个WriteLine()方法,类似于Debug和Console类上的方法,并支持在运行时或通过配置文件附加/分离各种侦听器,例如,(for Debug),(for files),,或者您可以创建用于写入数据库表或syslogd聚合器等位置的方法


您可以将对调试或控制台的每个当前调用改为使用跟踪,只需设置要使用的侦听器。请注意,跟踪方法缺少一些格式化功能,但我认为可配置的输出源远远弥补了这些功能。

除了Joel的答案之外,另一个非常简单的解决方案是:

private void writeLine(String s)
{

    #if DEBUG
        Debug.WriteLine(s);
    #else
        Console.WriteLine(s);
    #endif
}

这将使用预处理器指令,以便它不会写入控制台,除非处于释放模式。注意,这有点多余,因为在发布版本中,所有的
Debug
调用都会被删除,即使没有预处理器指令。

始终使用Debug.WriteLine并将以下行添加到程序的开头:

#if !DEBUG
            var listeners = new TraceListener[] { new TextWriterTraceListener(Console.Out) };
            Debug.Listeners.AddRange(listeners);
#endif

您还可以使用预处理器指令来更改附加了哪些跟踪侦听器。如果我想从这两者获取Writeline()的所有重载,该怎么办?有办法吗?