I am successfully instantiating/automating Visual Studio using the following code:
System.Type t = System.Type.GetTypeFromProgID(\"VisualStudio.DTE.9.0\");
o
I haven't had much luck with the IVSSolutionEvents technique (though I didn't try the code exactly as above). Instead, I created a small function to help me retry the call. I know that isn't particularly beautiful, but it is simple to call and it works!
Here's a link to my answer to another, similar question: https://stackoverflow.com/a/8565990/1106459
(It also helps with 'server busy' errors when calling other EnvDTE functions as well as opening and closing the solution.)