我正在寻找一个要使用的事件/界面,它会在打开解决方案后所有项目都加载到解决方案中后通知我。
我已经OnAfterOpenSolution
在IVsSolutionEvents2
界面中实现了。这会在解决方案打开后立即调用......所以我在 UI 线程上运行的任何代码,即使是异步的,都会在项目加载之前锁定 IDE。
是否有与实施`OnAfterOpenSolution'类似的技术,即在解决方案的所有项目都打开后调用?
我正在寻找一个要使用的事件/界面,它会在打开解决方案后所有项目都加载到解决方案中后通知我。
我已经OnAfterOpenSolution
在IVsSolutionEvents2
界面中实现了。这会在解决方案打开后立即调用......所以我在 UI 线程上运行的任何代码,即使是异步的,都会在项目加载之前锁定 IDE。
是否有与实施`OnAfterOpenSolution'类似的技术,即在解决方案的所有项目都打开后调用?
IVsSolutionLoadEvents接口中的OnAfterBackgroundSolutionLoadComplete事件在解决方案的所有项目完成加载后触发。为了使用 IVsSolution.AdviseSolutionEvents(..) 方法附加事件,此实现仍需要实现或扩展 IVsSolutionEvents 接口之一的实现。
在对该区域进行进一步调查后,仅当项目设置为在后台加载时才会发生 OnAfterBackgroundSolutionLoadComplete。如果后台加载已被禁用,则不会发生此事件。如果您打算依赖 OnAfterBackgroundSolutionLoadComplete 事件或根据用户设置加载优先级的方式进行切换,您可能还必须实现IVsSolutionLoadManager并确保至少 1 个项目具有后台加载优先级。