为什么在Visual Studio Express中Console.Writeline和Console.Write不起作用?

217

我刚刚打开了一个控制台应用程序,并输入了:

Console.WriteLine("Test");

但是输出窗口没有显示这个。我使用Ctrl+W, O进入输出窗口。

但是当我运行程序时,什么也没显示出来。这是不是在Visual Studio 2010 Express中不支持的?


4
正如Leif所说,它会在你看到它之前消失。使用Console.ReadKey() - Xaqron
请参考https://dev59.com/fnM_5IYBdhLWcg3wXx5N#1583569,了解将控制台输出重定向到调试输出窗口的机制。 - yoyo
22个回答

386

34
调试输出会出现在“输出”窗口中(调试 => 窗口 => 输出)。我的默认情况下未打开。 - Appulus
2
如果控制台窗口没有输出,还要检查应用程序的属性,在Debug选项卡下的Start Options中确保没有任何命令行参数将输出从控制台重定向。 - Chad Miller
使用类似 https://technet.microsoft.com/en-us/sysinternals/debugview.aspx 的工具 DebugView (dbgview) 来接收调试信息,因为它们不会出现在 cmd 控制台上。 - Roger Deep
如果你选择“不带调试启动”,你将看不到输出……因此,你必须通过“开始调试”来运行程序……听起来有些愚蠢,但我知道这一点……不要忘记在输出窗口中从“显示来自”选择“调试”(在我的情况下,原始选项卡是“生成”)。 - vainquit
虽然这不是我的实际问题,但你可以检查两个步骤。 1:确保你没有通过“选项->调试->常规->重定向所有输出窗口文本到...”来重定向输出。 2:在我的情况下,我没有定义DEBUG常量(请检查项目选项)/如果在RELEASE中有它的话,会有什么结果。 - Angry 84

42

没有提供令人满意的答案。

System.Diagnostics.Debug.WriteLine()会将消息写入到输出:调试窗口,但是许多进程不断地向该窗口中倾泻垃圾信息,好比在大海捞针一般,难以找到你的消息。

Console.WriteLine()不会写入到Visual Studio的任何窗口。我猜它只会在应用程序创建控制台的情况下才会写入到应用程序控制台上,换句话说,如果它是一个控制台应用程序。


1
你可以在你的信息前面加上一个字符串,例如 “>>>”,并使用 VSColorOutput 来突出显示这样的行。 - Andreas
如果您在输出窗口中右键单击,您可以关闭所有常见的垃圾信息(关闭线程、加载模块等)。 - user3797758
在我的情况下,输出出现在“立即”窗口中。 - Marcel Gruber
此外,在vs2022的dotnet 4.8 wpf项目中,它是可行的(console.writeline在输出中可见),但在c# 7.0 wpf项目中不可行。 - undefined

29

解决方案资源管理器 窗口中进入你自己的项目属性,选择应用程序类型并找到 输出类型

将其值更改为 控制台应用程序

这将在你的窗体旁边创建一个控制台屏幕。如果关闭控制台屏幕,则窗体也将关闭。


让我开心一下!现在我可以循环遍历我的LINQ查询并将数据快速、廉价地写入控制台,这是一个获取正确数据的好方法。 - JustJohn
  1. 它也适用于VS企业版。
  2. 此解决方案将消息重定向到单独打开的控制台窗口,而不是VS的输出/调试窗口。后者通常更加方便。很好!
- Alex Fainshtein

24

可能是控制台被清空了。请尝试:

Console.WriteLine("Test");
Console.ReadLine();

希望它会一直保留在那儿,直到你按下回车键。


8

或者您可以通过CTRL+F5进行调试,这将打开ConsoleWindow并等待最后一行执行完成,直到您按下键。


10
好的,那不是真正的“调试”,那只是在没有连接调试器的情况下启动应用程序。 :/ - damian

6
很可能是因为你在命名空间中使用了 Console,例如像这样:
namespace XYZApplication.Console
{
    class Program
    {
        static void Main(string[] args)
       {
            //Some code;             
       }
    }
}

尝试将其从命名空间中删除,或者改用完整的命名空间,例如:
   System.Console.Writeline("abc");

原因是出现问题的原因可能是由于您可能有另一个冲突的命名空间。例如:
using System;
using AnotherNamespaceThatContainsAConsoleClass;

1
我的应用程序中没有其他控制台,但添加 System. 有所帮助。谢谢。 - kolenda
使用Console有什么问题?这是为什么?有哪些机制?根据帮助中心的说法:“...始终要解释为什么你提出的解决方案是合适的以及它是如何工作的”。请通过编辑(更改)您的答案来回应,而不是在评论中回应(不要包含“编辑:”,“更新:”或类似内容 - 答案应该看起来像是今天写的)。 - Peter Mortensen
@PeterMortensen - 我已更新响应以包括为何使用控制台会有问题。感谢您的提醒。 - nadsy

6
我在运行单元测试时遇到了类似的问题。 Console.WriteLine() 没有将任何内容写入 Visual Studio 的输出窗口中。使用 System.Diagnostics.Debug.WriteLine() 解决了这个问题。

5
输出窗口不是控制台。请尝试使用 System.Diagnostics.Debug 中的方法。

5
在一个 Windows Forms 应用程序中,两种方法,
System.Diagnostics.Debug.WriteLine("my string")

并且

System.Console.WriteLine("my string")

写入输出窗口。

ASP.NET Core应用程序中,只有System.Diagnostics.Debug.WriteLine("my string")可以写入输出窗口。


5
尝试按下 Ctrl + F5 ,这将会保持你的屏幕,直到你按下任意键。

1
那怎么回答问题呢? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接