2011-09-26 17 views
5

He creado un nuevo paquete de extensibilidad VS 2010. Hasta ahora, todo lo que quiero hacer es que el usuario presione un botón y complete una vista de lista con todo el contenido de la solución. Tengo el siguiente código:Paquete de Extensibilidad de Visual Studio sin consultar el proyecto correcto

EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal. 
    GetActiveObject("VisualStudio.DTE.10.0"); 

foreach (Project project in dte.Solution.Projects) 
{ 
    foreach(ProjectItem pi in project.ProjectItems) 
    { 
     listView1.Items.Add(pi.Name.ToString()); 
    } 
} 

Esto parece funcionar, sin embargo, se rellena la lista con el contenido de la solución con el paquete en ella y no la instancia experimental que se puso en marcha cuando este se ejecuta . ¿Estoy instanciando la referencia erróneamente?

Respuesta

1

GetActiveObject El método devuelve la primera instancia de proceso del DTE, no el DTE llamante . (En el SDK de Visual Studio 2010 en el proyecto de Visual Studio 2010, tipo F5 para execure colmena experimental puede fallar)

Mira here y here para más detalles ...

Cuestiones relacionadas