C# 如何在.NET/C中调试时的Debug.WriteLine()和发布模式下的Console.WriteLine()之间切换#
在我的C#代码中,我想将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聚合器等位置的方法
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()的所有重载,该怎么办?有办法吗?