Visual Studio扩展:使用IVsSolutionEvents OnAfterOpenSolution等待所有项目完成加载

8
我正在寻找一个事件/接口,用于在打开解决方案后通知我所有项目都已加载。我已经在IVsSolutionEvents2接口中实现了OnAfterOpenSolution。这个函数会在解决方案打开后立即调用...所以任何针对UI线程的代码,即使是异步的,也会在项目加载之前锁定IDE。是否有类似的技术来实现OnAfterOpenSolution,一旦解决方案的所有项目都已打开就会被调用?
1个回答

5
OnAfterBackgroundSolutionLoadComplete事件位于IVsSolutionLoadEvents接口中,当解决方案的所有项目都已完成加载时触发。要使用IVsSolution.AdviseSolutionEvents(..)方法附加事件,仍需要实现或扩展IVsSolutionEvents接口的实现。
在这个领域进行进一步调查后,发现只有在将项目设置为后台加载时,才会发生OnAfterBackgroundSolutionLoadComplete事件。如果禁用了后台加载,则不会发生此事件。如果您打算依赖OnAfterBackgroundSolutionLoadComplete事件,或者根据用户设置的加载优先级进行切换,则还需要实现IVsSolutionLoadManager,并确保至少有一个项目具有后台加载优先级。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接