System.Diagnostics.Debug.Write输出在哪里出现?

以下C#程序(使用csc hello.cs构build) Hello via Console!打印出Hello via Console! 在控制台上,并Hello via OutputDebugString DebugView窗口中的Hello via OutputDebugString 。 但是,我看不到任何一个System.Diagnostics.*调用。 这是为什么?

 using System; using System.Runtime.InteropServices; class Hello { [DllImport("kernel32.dll", CharSet=CharSet.Auto)] public static extern void OutputDebugString(string message); static void Main() { Console.Write( "Hello via Console!" ); System.Diagnostics.Debug.Write( "Hello via Debug!" ); System.Diagnostics.Trace.Write( "Hello via Trace!" ); OutputDebugString( "Hello via OutputDebugString" ); } } 

是否有可能需要一些特殊的命令行开关csc

我没有为我的任何开发使用Visual Studio,这是纯粹的命令行的东西。

正如其他人所指出的,听众必须注册才能阅读这些stream。 另外请注意, Debug.Write只有在设置了DEBUG构build标志的情况下才会起作用,而Trace.Write只有在TRACE构build标志被设置的情况下才起作用。

设置DEBUG和/或TRACE标志很容易在Visual Studio的项目属性中完成,或者通过向csc.exe提供以下参数

/define:DEBUG;TRACE

debuggingSystem.Diagnostics.Debug.WriteLine将显示在输出窗口( Ctrl + Alt + O )中,还可以将TraceListener添加到Debug.Listeners集合,以指定Debug.WriteLine调用以在其他位置输出。

注:如果在工具选项debugging常规下选中了Visual Studio选项“将所有输出窗口文本redirect到立即窗口”,则Debug.WriteLine调用可能不会显示在输出窗口中。 要显示“ 工具选项debugging ”,选中“ 工具选项显示所有设置 ”旁边的checkbox。

您需要添加一个TraceListener以查看它们出现在控制台上。

 TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out); Debug.Listeners.Add(writer); 

处于debugging模式时,它们也出现在“Visual Studio输出”窗口中。

在Visual Studio中debugging时,显示“输出”窗口(视图 – >输出)。 它会显示在那里。

当我在代码中写入debug.write(“”)时,它将在“立即窗口”而不是“输出窗口”中输出。

你可以尝试一下。 用于显示“立即”窗口( debugging窗口立即 )。

我的情况的解决scheme是:

  1. 右键单击输出窗口;
  2. 检查“程序输出”

对于VB.NET,以下适用。 你必须select“debugging”,并确保你“开始debugging”。 这可以通过按F5来达到。

此外,Console.WriteLine将仅在“输出”窗口中构build为“发布”时显示消息。

如前所述,使用ViewOutput打开Output窗口,如果你想看到Console.WriteLine消息,请确保select“Build”,如果你想看到Debug.WriteLine或Trace.WriteLine消息,请select“Debug”。