vs和有什么区别?Console
.WriteLine()
Debug
.WriteLine()
Answers:
Console.WriteLine可以在调试或发行版本中写入标准输出流。Debug.WriteLine写入Listeners集合中的跟踪侦听器,但仅在调试时运行。在发布配置中编译应用程序时,Debug元素将不会编译到代码中。
至于Debug.WriteLine
写在所有跟踪监听器监听器集合,它是可能的,这可能是在多个地方输出(Visual Studio的输出窗口,控制台,日志文件,第三方应用程序,注册一个监听器(我相信DebugView中做到这一点)等)。
Console.WriteLine()
适用于控制台模式程序。Visual Studio宿主进程的一个不错的功能是,在调试没有控制台的进程时,它的输出将显示在“ Visual Studio输出”窗口中。这在调试时非常有用,但是请注意,当您准备创建Release版本时,应该删除此代码(或使用#ifdef DEBUG对其进行包装)。否则,它将增加程序不必要的开销。这使其对于调试跟踪而言不理想。
Debug.WriteLine()
如果使用DEBUG条件#defined构建,则生成跟踪信息。在调试版本中,默认情况下启用该功能。可以在app.exe.config文件中配置输出结束的位置。如果未重写此配置,则.NET将自动提供DefaultTraceListener类的实例。它将带有Windows OutputDebugString()API函数的Debug.WriteLine()文本发送到调试器。Visual Studio调试器使它显示在“输出”窗口中,就像Console.WriteLine()一样。
Debug.WriteLine()的明显优势在于,它在Release版本中不产生任何开销,可以有效地删除调用。但是,它不支持复合格式,您将需要String.Format()。对于调试跟踪,应选择Debug类。
如果使用Console.WriteLine的目的仅用于调试,则最好使用Debug.WriteLine。
如果要向用户显示消息(在控制台应用程序中),则可以使用Console.WriteLine。
Debug.WriteLine仅用于调试应用程序。在发布模式下,您的调试语句将被忽略。
控制台应用程序的另一种用法是测试专用程序集。您可以简单地将DLL重新构建为控制台应用程序并从控制台输入/输出,而不是创建用于测试DLL编译版本的GUI测试工具的传统方法。我发现这种技术比花时间创建GUI测试工具更快。
OutputDebugString
(和DebugPrint
)记录的消息。在DefaultTraceListener
写OutputDebugString
,这就是为什么DebugView中看到的输出。msdn.microsoft.com/en-us/library/...