c# - Console.WriteLine 在 VS2012 中不再工作

标签 c# visual-studio visual-studio-2012

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

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

最佳答案

从 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 则不然。并且您可以重新配置跟踪监听器以生成输出,例如文件。

关于c# - Console.WriteLine 在 VS2012 中不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16997730/

相关文章:

c# - t4 "VisualStudioHelper"未找到

c# - 如何获取应用程序中通过反射解析的每个程序集、命名空间和类的列表?

c# - 列表中的最大日期时间

c# - 如何将 XmlDocument 序列化为格式良好的人类可读 XML?

c# - 为什么 C++ 和 C# 的编译速度相差很大?

c# - 在ms visual studio中使用是否必须单独安装ms sql server 2005

c# - If 语句的更好语法

c# - 从文件夹、其子文件夹和其中的所有文件中删除只读

python - 在 Python Tools for Visual Studio 中调试 GAE

c++ - 使用 OpenCV 2.4.8 构建 CUDA 5.5