8

我正在尋找一個事件/接口來使用它,通知我一旦所有項目都在解決方案後加載到解決方案中。Visual Studio擴展:等待所有項目完成加載IVsSolutionEvents OnAfterOpenSolution

我在IVsSolutionEvents2接口中實現了OnAfterOpenSolution。這會在解決方案打開後立即調用...因此,我在UI線程上運行的任何代碼(甚至是非常簡單的)在項目加載之前都會鎖定IDE。

是否有類似的技術來實現`OnAfterOpenSolution',這是所有解決方案項目打開後調用?

回答

5

IVsSolutionLoadEvents接口中的OnAfterBackgroundSolutionLoadComplete事件在解決方案的所有項目完成加載後觸發。爲了使用IVsSolution.AdviseSolutionEvents(..)方法附加事件,此實現仍需要實現或擴展其中一個IVsSolutionEvents接口的實現。

在進一步調查此區域時,僅當項目設置爲在後臺加載時,纔會出現OnAfterBackgroundSolutionLoadComplete。如果後臺加載已禁用,則不會發生此事件。如果您打算依賴OnAfterBackgroundSolutionLoadComplete事件,或者根據用戶設置其加載優先級的方式進行切換,您可能還必須實施IVsSolutionLoadManager並確保至少有一個項目具有後臺加載優先級。