有人知道为什么Console.Write(string)
不再在Visual Studio 2017 C# Windows窗体应用程序中工作吗?
下面是一些可复制的示例代码:
Console.WriteLine("Results: ");
const int count = 15;
for (int i = 0; i < count; i++)
{
if (i == (count - 1))
Console.Write(i);
else
Console.Write(i + ", ");
}
我已经向微软的VS团队提交了一个bug,但他们并没有提供什么帮助。他们似乎不理解这个问题,因为某种原因?我不知道如何比这里更清楚。
错误报告:https://developercommunity2.visualstudio.com/t/consolewritestring-does-not-work-anymore/1241476
3条答案
按热度按时间4nkexdtk1#
它不会工作,因为
winforms
项目不会在这里创建控制台窗口。如果你想看到它的控制台输出,你需要打开Visual Studio的集成输出窗口。步骤1
单击Visual studio导航菜单中的“查看”。
第二步
然后单击
Output
,或者您可以使用快捷方式Ctrl+W
,O
为您打开窗口。步骤3
现在,将所有的
Console.WriteLines(...);
替换为Debug.WriteLines(...);
,这将放置您想要输出的所有行。pokxtpni2#
微软已经改变了他们产品的功能,他们这样做甚至没有很多人注意到,因为它是这样一个利基案例场景......正如@Jimi在上面的评论中所说。
你指的是Visual Studio的输出面板,当然是(?)。或者是即时窗口,这取决于你的配置。如果是这样的话,这发生在一段时间前,并持续了一段时间。它已经解决了(或者,更好的是,默认行为已经恢复)在当前版本之前的许多版本。
cetgtptt3#
我跟随你的Bug Report并复制了你的问题。
根本原因是:您的项目不是控制台应用程序,即控制台应用程序将立即显示Console.Write输出。然而,在WinForms中,Visual Studio读取控制台输出,但不会将其打印到输出窗格,直到向其提供换行符。通常,Windows窗体应用程序不使用Console.Write[Line],因为当您在Visual Studio之外运行时,它不会出现在任何地方。
如果您坚持使用Console.Write,请添加一个换行符,如下所示:x1c 0d1x控制台。写入有输出!
您也可以按照Jamshaid Kamran的建议打开View-Output并将
Console
更改为Debug
,或者有here打开Console窗口的解决方案,但非常不方便。根据我的经验,我更喜欢使用MessageBox.Show(“Results”)来临时查看某些内容。