Console.Write(string) 不再适用于 VS 2017 WinForms 项目?

问题描述 投票:0回答:3

有人知道为什么

Console.Write(string)
不再适用于 Visual Studio 2017 C# Windows Forms 应用程序吗?

这里有一些示例代码可以重现:

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 + ", ");
}

我已经向 Microsoft 的 VS 团队提交了一个错误,但他们的帮助不大。他们似乎出于某种原因不理解这个问题?我不知道如何比这里更清楚。

错误报告:https://developercommunity2.visualstudio.com/t/consolewristring-does-not-work-anymore/1241476

c# winforms visual-studio-2017
3个回答
2
投票

它不会工作,因为

winforms
项目不会在这里创建控制台窗口。如果你想看到它的控制台输出,你需要打开 visual studio 的集成输出窗口。

第一步
在 Visual Studio 的导航菜单中单击“查看”。

步骤 2
然后点击

Output
或者您可以使用快捷键
Ctrl+W
O
为您打开窗口。

步骤 3

现在,将所有

Console.WriteLines(...);
替换为
Debug.WriteLines(...);
,这将放置您想要输出的所有行。


0
投票

Microsoft 已经改变了他们产品的功能,而且他们在没有很多人注意到的情况下就这样做了,因为这是一个非常小众的案例场景......正如@Jimi 在他上面的评论中所说.

当然是指 Visual Studio 的输出面板(?)。或立即窗口,具体取决于您的配置。如果是这样的话,这件事发生在不久前,并且持续了一段时间。它已经解决了(或者,更好的是,恢复了默认行为)当前版本之前的许多版本。


-1
投票

我关注了您的错误报告并重现了您的问题。

根本原因是:您的项目不是控制台应用程序,即控制台应用程序将立即显示 Console.Write 输出。但是,在 WinForms 中,Visual Studio 会读取控制台输出但不会将其打印到输出窗格,直到向其输入换行符。通常,Windows 窗体应用程序不使用 Console.Write[Line],因为当您在 visual studio 之外运行时它不会去任何地方。

如果您坚持使用 Console.Write,请添加一个换行符,如下所示: Console.Write 有输出!

您也可以按照 Jamshaid Kamran 的建议打开 View-Output 并将

Console
更改为
Debug
,或者有解决方案 here 打开控制台窗口但非常不方便。根据我的经验,我更愿意使用 MessageBox.Show("Results") 来临时查看一些东西。

© www.soinside.com 2019 - 2024. All rights reserved.