自定义MSBuild任务:如何在任务仍在运行时刷新VS2012输出窗口中的日志记录?

我有一个自定义的MSBuild任务,需要一些时间才能完成。 它使用Log.LogMessage()BuildEngine.LogMessageEvent() (两者都尝试)输出进度。

我的问题是,在任务完成之前,所有输出都不会出现在VS2012输出窗口中,从而使进度更新无效。 我希望在任务运行时立即显示输出。

我发现各种线程解释经常调用Application.DoEvents() ,但这似乎并没有解决问题(也许它只适用于VS2010及之前?)。

VS2012中的已知错误。

我们最终为VS2012 / 2013制作了一个VSPackage扩展(直接在窗格日志中输出)。

它在VS2015中修复。

这是VS 2012中的一个错误。在此错误报告的评论中,代表Microsoft的别名为Will的用户在2013年7月2日写道, Though we will not have a chance to address this issue in Visual Studio 2012, we will consider this feedback when planning for future versions of Visual Studio.