最近我遇到了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 完成的方法,或者以一种独特的方式来重建下一个解决方案在重建完成之前,行不会执行。
答案 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
您可能希望连接到宏中的变量集,以确保仅在从“重建”启动构建时处理构建事件