2

突然之间,我的 Console.WriteLine 在“输出”窗口中不再显示任何内容。Debug.WriteLine 确实有效。我已经通过右键单击“输出”窗口检查所有消息仍然被检查。我也浏览了设置,但找不到任何东西。

我的想法用完了,有人知道如何解决这个问题吗?

4

3 回答 3

3

从 Console.Write/Line() 获取输出以显示在 VS 输出窗口中是一项重要的功能。它需要使用“Visual Studio Hosting Process”进行调试。您将在构建目录和 TaskMgr.exe 的进程选项卡中看到它,它与您的项目具有相同的名称,但以“vshost.exe”结尾。

在托管过程中发生了相当多的无形魔法。它是 CLR 的自定义主机,它为 CLR 提供与您通常运行的行为不同的行为。它的文档记录非常少,其存在的主要原因似乎与安全性有关。但是它需要处理的一个好处是能够将使用 Console.Write 写入的输出重定向到输出窗口。

项目 + 属性,调试选项卡,验证“启用 Visual Studio 托管进程”选项是否仍处于勾选状态。

否则,这可能是一个幸运的不幸事件。您确实应该在代码中使用 Debug.Print() 或 Debug.Write/Line() 来生成诊断字符串。它使用一种完全不同的方式来生成输出,这种方式不依赖于托管进程。它使用默认的 TraceListener,直接与调试器对话。底层的 winapi 调用是 OutputDebugString()。Debug 类的最佳特性是,当您构建程序的 Release 版本时,您在代码中进行的调用会自动删除。所以他们不再需要任何开销,Console.Write 不是这样。并且您可以重新配置跟踪侦听器以生成输出到例如文件。

于 2013-06-08T10:45:53.520 回答
0

我今天遇到了同样的问题,并解决了它。我检查了很多帖子,但没有帮助我。根本原因是您使用了不同的文件,这些文件void Main()在不同的类中是相同的。当有两个具有共同功能的文件时main(),它将不起作用。系统似乎只使用默认的程序类。

您可以做的是将代码移动到program.cs文件下(如果您使用C#),那么在新窗口中就可以了。

于 2014-08-04T11:50:29.777 回答
0

以下将允许您查看两种类型的“控制台”消息:

  1. 将以下两个测试粘贴到您的代码中,以便它运行两行。这些是输出窗口的测试:

     System.Console.WriteLine($"hello console!");
    
     System.Diagnostics.Debug.WriteLine($"hello debugger!");
    
  2. 在 Visual Studio 中,选择视图 > 输出。更改以下两个设置后,您将在此输出窗口中看到上述结果。

  3. 当 NOT DEBUGGING 时,在顶部的 OUTPUT 窗口中的“Show Output From”下选择:“YourProjectName - ASP.NET CORE Web Server”。运行你的代码。您应该看到上面的“控制台”文本。

  4. DEBUGGING 时,在顶部的 OUTPUT 窗口中的“Show Output From”下选择:“Debugger”。在调试模式下运行您的代码。您应该看到上面的“调试”文本。

于 2021-08-20T23:34:14.993 回答