3

我正在编写一个 VS2008 加载项(使用 DTE),在当前解决方案完成加载后需要通知该加载项。

我尝试使用以下代码:

events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;

不幸的是,似乎自 VS2005 以来,该事件在解决方案开始加载时引发 - 而不是在它完成时引发。

一个简短的互联网搜索产生了以下线程来解释问题并提出解决方案(检查每个项目项以查看它是否完成加载)。

这是可用的最佳解决方案,还是有更好的方法来了解解决方案何时完成加载?

4

1 回答 1

4

我找到了解决此问题的解决方法 - 我创建了一个在主线程上运行的 Windows.Forms.Timer 并检查解决方案是否已完成加载。

private void TimerTick(object sender, EventArgs e)
{
   try
   {
       var solution = applicationObject.Solution;
       if (solution.IsOpen && string.IsNullOrEmpty(solution.FileName) == false)
       {
           timer.Stop();
           // insert logic here
       }
   }
   catch (Exception exception)
   {
       Console.WriteLine(exception);
   }
}
于 2009-10-08T07:03:16.060 回答