Domanda

Sto scrivendo un VS2008 aggiuntivo (con DTE) che deve essere comunicato dopo che la soluzione corrente ha terminato il caricamento.

Ho provato con il seguente codice:

events = (Events2) applicationObject.Events
events.SolutionEvents.Opened += DoSomeWorkEvent;

Purtroppo sembra che da quando VS2005 l'evento viene generata quando la soluzione inizia a caricare -. E non quando finisce

Una ricerca su Internet ha prodotto il corto thread che spiega il problema e suggerire una soluzione (controllare ogni elemento del progetto per vedere se è terminato il caricamento).

E 'questo la migliore soluzione disponibile o c'è un modo migliore per sapere quando una soluzione è terminato il caricamento?

È stato utile?

Soluzione

Ho trovato una soluzione che risolve questo problema -. Ho creato un Windows.Forms.Timer che viene eseguito sul thread principale e controlla se la soluzione ha terminato il caricamento

private void TimerTick(object sender, EventArgs e)
{
   try
   {
       var solution = applicationObject.Solution;
       if (solution.IsOpen && string.IsNullOrEmpty(solution.FileName) == false)
       {
           timer.Stop();
           // insert logic here
       }
   }
   catch (Exception exception)
   {
       Console.WriteLine(exception);
   }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top