2009-02-23 12 views
5

¿Cómo puede mi complemento detectar cuando se carga una solución? Sé que debe haber algún evento en algún lugar del modelo de DTE, pero no puedo encontrarlo. Mis cargas de complemento cuando se carga Visual Studio, pero depende de que una solución esté abierta. No quiero convertirlo en una solución adicional hasta que MS pierda su fijación de enfermedad en COM, ya que los complementos de solución tienen que ser componentes COM.¿Cómo puede detectar un complemento cuando se carga una solución?

Respuesta

8

Así es como para inscribirse en el manejo de eventos usando C#:

_solutionEvents = _applicationObject.Events.SolutionEvents; 
_solutionEvents.Opened += new _dispSolutionEvents_OpenedEventHandler(SolutionOpened); 
_solutionEvents.AfterClosing += new _dispSolutionEvents_AfterClosingEventHandler(SolutionClosed); 

También tenga en cuenta que cuando el usuario abre Visual Studio haciendo doble clic en un archivo de solución, no se va a un evento para la apertura solución. Debería verificar si _applicationObject.Solution no es nulo en el método OnStartupComplete para manejar esta situación correctamente.

0

La clase SolutionEvents en MSDN incluye evento:

abierto: se produce inmediatamente después de abrir una solución o proyecto.

0

Tienes en la clase DTE2 una propiedad llamada Events se da una especie montón de eventos, por lo que es necesario que usted tiene que utilizar:

DTE2 _applicationObject 
_applicationObject.Events.SolutionEvents.Opened+=new _dispSolutionEvents_OpenedEventHandler(SolutionEvents_Opened); 
Cuestiones relacionadas