用DTE重建VS中的解决方案

时间:2011-03-11 15:09:38

标签: visual-studio debugging visual-studio-2003 envdte

最近我遇到了Visual Studio 2003的问题,经过几次运行解决方案后,会有一次运行会告诉我很多对象都丢失了......或者很多对象都没有因其范围而可用。

重建后解决了这个问题(无论项目是否发生变化,都会重建整个解决方案)。由于这通常是我为 Rebuild Solution 选项分配了键盘快捷键,在此之后我可以毫无问题地运行解决方案。

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

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

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

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

1 个答案:

答案 0 :(得分: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

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