Frage

Ich schreibe ein VS2008-Add-In (mit DTE), die benachrichtigt werden muss, nachdem die aktuelle Lösung vollständig geladen ist.

Ich habe versucht, den folgenden Code:

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

Leider scheint es seit VS2005, dass das Ereignis ausgelöst wird, wenn die Lösung zu laden beginnt -. Und nicht, wenn es fertig ist

Eine kurze Suche im Internet produzierte die folgenden Threads , die das Problem und eine Lösung vorschlagen (überprüfen jedes Projektelement zu sehen, ob es fertig geladen).

Ist dies die beste Lösung zur Verfügung, oder gibt es einen besseren Weg, zu wissen, wann eine Lösung vollständig geladen ist?

War es hilfreich?

Lösung

Ich habe eine Abhilfe gefunden, das dieses Problem löst. - Ich habe eine Windows.Forms.Timer erstellt, die auf dem Haupt-Thread ausgeführt wird und prüft, ob die Lösung fertig geladen ist

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);
   }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top