If you have a package class in your assembly, you can do:
DTE2 = Package.GetGlobalService(typeof(SDTE)) as DTE2;
Then look at the IsOpen property to see if the solution is open ... look at the Projects property to find projects.
However, if you mean you, how do I get an event when a solution opens ... then Solutions, for example:
public sealed class MyPackage : Package { private DTE m_dte; protected override void Initialize() { IServiceContainer serviceContainer = this as IServiceContainer; m_dte = serviceContainer.GetService(typeof(SDTE)) as DTE; var m_solutionEvents = m_dte.Events.SolutionEvents; m_solutionEvents.Opened += SolutionOpened; ... } void SolutionOpened() { .... away you go... } }
ref: VSIX: Getting the DTE object ref: http://msdn.microsoft.com/en-us/library/envdte.solution.aspx
ref: http://msdn.microsoft.com/en-us/library/envdte._solution.projects.aspx
source share