1

最近我在使用 Visual Studio 2003 时遇到了问题,在运行了几次解决方案后,会出现这一次运行,它会告诉我很多对象丢失了……或者很多对象不可用,因为他们的范围。

此问题在重建后得到解决(无论项目是否更改,都会重建整个解决方案)。由于我经常为“重建解决方案”选项分配键盘快捷键,因此在此之后我可以毫无问题地运行该解决方案。

我现在想向前迈出一步,并在重建解决方案完成后自动运行解决方案。我尝试使用宏,但是在查看生成的代码后:

Sub Rebuild()
    DTE.ExecuteCommand("Build.RebuildSolution")
    DTE.Debugger.Go(False)
End Sub

我意识到 ExecuteCommand 在启动Build.RebuildSolution命令后立即返回,因此DTE.Debuger.Go(False)无法执行,因为解决方案已经在构建中。

我需要的是一种让Debugger.Go()等待ExecuteCommand完成的方法,或者一种独特的方法来重建解决方案,其中下一行在重建完成之前不会执行。

4

1 回答 1

1

我没有 VS2K3,但在以后的版本中,这样做的方法是连接到 EnvironmentEvents 上的 BuildDone 事件,如下所示:

Private Sub BuildEvents_OnBuildDone( _
    ByVal Scope As EnvDTE.vsBuildScope, _
    ByVal Action As EnvDTE.vsBuildAction) Handles BuildEvents.OnBuildDone

    DTE.Debugger.Go(False)

End Sub

您可能希望连接到宏中设置的变量,以确保仅在从“重建”启动构建时处理构建事件

于 2011-03-11T15:16:22.710 回答