Расширение Visual Studio: дождитесь завершения загрузки всех проектов с помощью IVsSolutionEvents OnAfterOpenSolution

Я ищу событие / интерфейс для использования, который уведомляет меня, когда все проекты загружены в решение после открытия решения.

Я реализовал OnAfterOpenSolution в IVsSolutionEvents2 интерфейс. Это вызывается сразу после открытия решения... поэтому любой код, который я запускаю в потоке пользовательского интерфейса, даже асинхронно, блокирует IDE перед загрузкой проекта (-ов).

Существует ли подобный метод реализации OnAfterOpenSolution, который вызывается после открытия всех проектов решения?

1 ответ

Решение

Событие OnAfterBackgroundSolutionLoadComplete в интерфейсе IVsSolutionLoadEvents вызывается после завершения загрузки всех проектов для решения. Реализация для этого все еще должна будет реализовывать или расширять реализацию одного из интерфейсов IVsSolutionEvents, чтобы присоединить событие, используя метод IVsSolution.AdviseSolutionEvents(..).

При дальнейшем исследовании в этой области OnAfterBackgroundSolutionLoadComplete происходит только в том случае, если для проектов задана загрузка в фоновом режиме. Если фоновая загрузка отключена, это событие не произойдет. Скорее всего, вам также потребуется реализовать IVsSolutionLoadManager и убедиться, что по крайней мере 1 проект имеет приоритет фоновой загрузки, если вы собираетесь полагаться на событие OnAfterBackgroundSolutionLoadComplete или переключаться в зависимости от того, как пользователь установил свой приоритет загрузки.