Visual Studio-Erweiterung: Warten Sie, bis alle Projekte vollständig mit IVsSolutionEvents OnAfterOpenSolution geladen sind

8

Ich suche nach einem Ereignis / einer Schnittstelle, das / die mich benachrichtigt, sobald alle Projekte nach dem Öffnen einer Lösung in eine Lösung geladen wurden.

Ich habe OnAfterOpenSolution in IVsSolutionEvents2 Schnittstelle. Dies wird sofort nach dem Öffnen der Lösung aufgerufen ... also sperrt jeder Code, den ich sogar asynchron für den UI-Thread ausführe, die IDE, bevor das Projekt geladen wird.

Gibt es eine ähnliche Technik zur Implementierung von 'OnAfterOpenSolution' , heißt das, sobald alle Projekte für die Lösung geöffnet sind?

    
Sheldon Warkentin 06.12.2012, 18:13
quelle

1 Antwort

5

Die Ereignis OnAfterBackgroundSolutionLoadComplete in der Schnittstelle IVsSolutionLoadEvents wird ausgelöst, nachdem alle Projekte für die Lösung geladen wurden. Die Implementierung dafür muss weiterhin eine Implementierung einer der IVsSolutionEvents-Schnittstellen implementieren oder erweitern, um das Ereignis mithilfe der IVsSolution.AdviseSolutionEvents (..) -Methode anzuhängen.

Bei weiteren Untersuchungen in diesem Bereich tritt OnAfterBackgroundSolutionLoadComplete nur auf, wenn Projekte so eingestellt sind, dass sie im Hintergrund geladen werden. Wenn das Hintergrundladen deaktiviert wurde, wird dieses Ereignis nicht auftreten. Sie müssen wahrscheinlich auch IVsSolutionLoadManager implementieren und stellen Sie sicher, dass mindestens ein Projekt eine Hintergrundladepriorität hat, wenn Sie sich auf das OnAfterBackgroundSolutionLoadComplete-Ereignis verlassen möchten, oder wechseln Sie basierend darauf, wie der Benutzer seine Ladepriorität festgelegt hat.

    
Colin Pedlar 23.05.2013, 16:05
quelle