如何在Visual Studio 2015(C#,WinForms)中查看stderr

3
Console.Out.WriteLine(111); //<-- '111' is shown in 'Output' window
Console.Error.WriteLine(222); //<-- where I can see '222' within IDE?

在输出窗口(查看| 输出,Ctrl+Alt+O)中成功显示了“111”:
Screen-shot of the Output window with '111' visible
我在IDE中哪里可以看到“222”?

P.S.:上面的代码有效。我可以通过执行WindowsFormsApplication1.exe >output.txt 2>error.txt来确保它('output.txt'将包含'111',而'error.txt'将包含'222')。但问题是直接从IDE中查看(如果Visual Studio 2015根本不允许它 - Visual Studio 2017是否修复了这个问题?)


stdout和stderr是来自Unix的概念。它们可以追溯到输入和输出重定向被认为是有用工具,用户使用电传打字机与计算机进行交互的时代。在GUI应用程序中,它们毫无意义,只存在于控制台应用程序中。你能在输出窗口中看到Console.WriteLine的输出只是一个巧合,这是由Visual Studio Hosting Process选项实现的功能。因此,它只能在VS中工作,并且只能在调试时使用。而且它没有未来,该选项已在VS2017中移除。 - undefined
如果你真的想要的话,你可以使用 Console.SetOut() 和 SetError(),提供一个 TextWriter 的实现,它可以将输出发送到例如 TextBox。 - undefined
@HansPassant,嗯,我认为stdin、stdout和stderr是每个应用程序基于的基础。尽管现代Windows GUI应用程序很少使用它们,但这并不意味着它们被禁止使用。对于IDE来说,不提供任何可用的方式来检查它们是相当奇怪的。 - undefined
1个回答

1

嗯,我找到了。

Visual Studio的托管进程是阻止stderr与stdout一起在输出窗口中显示的东西。

如果你禁用托管进程,它也将在输出窗口中显示:
同时显示'111'和'222'的输出窗口截图


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