Visual Studio 2010 输出面板未更新构建后输出

Met*_*450 5 visual-studio-2010

我最近刚从 VS2008 升级到 VS2010。因为我进行了大量远程调试(通过 VPN),所以我使用 Post-Build 事件在运行之前将编译后的二进制文件和 PDB 复制到目标机器上。我通过调用(除其他外)执行 Robocopy 的批处理文件来做到这一点。

在 VS2008 中,Output 面板会实时显示 robocopy 的输出,即:

5>          Newer             421376    RadarController.pdb
5>    0%  
5>   14%  
5>   29%  
5>   43%  
5>   58%  
5>   72%  
...
Run Code Online (Sandbox Code Playgroud)

然而,在 VS2010 中,它不是一点一点地显示 Post-Build 事件的进度,而是简单地锁定,直到整个事件完成 - 然后输出全部立即出现。在通过较慢的网络连接进行复制时,这是一个特殊问题,因为我不知道一次可能几分钟内发生了什么。无法猜测复制会持续 5 秒还是 5 分钟;如果我不熟悉编译器事件的顺序,我什至不知道它在复制。

这是 2010 年的已知错误,还是有人知道现有的解决方法?

谢谢!

编辑 1:该项目是 C#。

编辑 2:我使用的确切 Robocopy 命令是 robocopy.exe . \\192.168.5.7\Release /NJS /NJH /Z /W:1 /R:5 /E

Ram*_* A. 1

我想知道使用 msbuild<exec>任务而不是构建后事件是否可以解决此问题?

例如,如果该<exec>任务不满足您的要求,则执行与该<exec>任务类似的操作的自定义 msbuild 任务可能会解决该问题。

更新
我只是尝试<Exec Command="" />在我的 msbuild 文件中使用 PostBuild 事件,但它仍然使 Visual Studio IDE 繁忙\无响应。

也许我们可以创建一个自定义的 msbuild 任务来调用 Application.DoEvents 来保持 UI 响应?

更新#2:我上传了一个补丁到 MSBuild Extension Pack,该补丁实现了一个名为 SmartExec 的自定义 msbuild 任务,可以解决此问题。

http://msbuildextensionpack.codeplex.com/workitem/9053
http://msbuildextensionpack.codeplex.com/SourceControl/list/patches
补丁 ID 9878