如何强制VS2015刷新预构建/后构建输出?

3

Visual Studio 等待预构建/后构建脚本完成以显示输出。是否有选项可以强制它在新行上刷新,例如?


这是输出重定向的完全正常和不可避免的副作用。当程序被重定向时,它们会切换到缓冲模式,直到缓冲区填满(通常为~2KB)或程序停止运行才会写入输出。David Cutler讽刺地唱着“getta byte, getta byte, getta byte byte byte”来描述这个Unix特性,以威廉·特尔序曲的曲调。你无法做任何事情,只能在等待时唱歌。 - Hans Passant
通常,您可以为标准/错误输出设置流式输出,并且可以逐行读取数据。我猜在VS中不是这样实现的。 - f0rt
1个回答

3

我用VS2010测试了这个行为,并使用一个在postbuildStep中启动的小型C#脚本。
我的脚本会在控制台中写入多行文本,每行后等待200ms。

是的。当子进程完成时,在输出窗口中刷新输出文本。

在脚本中每个WriteLine后添加手动Flush()并不能解决问题。

因此,当启动子进程并通过简单的ReadToEnd()消耗控制台输出时,我看到了这种行为。正确的实现应该使用ReadLineAsync()

在Visual Studio中,这似乎是标准行为。我猜这就是它在VS中实现的方式。


这也是我的观察。我希望有一个设置来覆盖这种行为。 - f0rt

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