I'm currently porting a VS2010 extension to VS2012 and I've seen that the IVsSolutionEvents.OnAfterOpenProject(IVsHierarchy pHierarchy, int fAdded) callback is called with fAdded == 1 when I'm loading my solution. I believe this must be due to the asynchronous loading of the projects in VS2012. This doesn't happen with VS2010.
My question is then how can I know in OnAfterOpenProject that it's being called from the asynchronous project loading process?