Если у вас есть класс Package в вашей сборке, вы можете сделать:
DTE2 = Package.GetGlobalService(typeof(SDTE)) as DTE2;
Затем посмотрите на свойство IsOpen и посмотрите, открыто ли решение ... посмотрите на свойство Projects, чтобынайти проекты.
Однако, если вы имеете в виду, как получить событие, когда решение открыто ... тогда Решения, например:
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: ПолучениеСсылка на объект DTE: http://msdn.microsoft.com/en-us/library/envdte.solution.aspx
ссылка: http://msdn.microsoft.com/en-us/library/envdte._solution.projects.aspx