有人知道为什么
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
Microsoft 已经改变了他们产品的功能,而且他们在没有很多人注意到的情况下就这样做了,因为这是一个非常小众的案例场景......正如@Jimi 在他上面的评论中所说.
当然是指 Visual Studio 的输出面板(?)。或立即窗口,具体取决于您的配置。如果是这样的话,这件事发生在不久前,并且持续了一段时间。它已经解决了(或者,更好的是,恢复了默认行为)当前版本之前的许多版本。
我关注了您的错误报告并重现了您的问题。
根本原因是:您的项目不是控制台应用程序,即控制台应用程序将立即显示 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") 来临时查看一些东西。