2012-08-25 27 views
8

Hasta ahora, he estado utilizando con éxito EnvDTE para gestionar Visual Studio Toolbox.EnvDTE sustituto en Visual Studio 2012

Hay DLL modificadas para abordar los diferentes versiones de Visual Studio:

EnvDTE.dll - VS comunes de automatización (probablemente funciona en todas las versiones)

EnvDTE80.dll - para hacer frente a VS 2005

EnvDTE90.dll - para hacer frente a VS 2008

EnvDTE100.dll - para hacer frente a VS 2010

Sin embargo, no hay EnvDTE110 para VS 2012. ¿Eso significa que esta es una forma diferente de automatización VS que usar estas bibliotecas de envoltura COM?

Si es así, ¿cómo, por ejemplo, trabajar con proyectos de VS 2012 y Toolbox remotamente de otra manera que con EnvDTE?

+0

¿Quién dice que tiene que haber una EnvDTE110? – Will

+0

@Will He aclarado la pregunta un poco. – Libor

+0

Creo que la pregunta que podría querer hacer es "Quiero hacer X en la nueva función Y en 2012, pero no puedo hacerlo con EnvDTE100. ¿Cómo puedo hacer esto?" [EnvDTE es solo uno de los muchos puntos de extensibilidad dentro de Visual Studio.] (Http://msdn.microsoft.com/en-us/library/bb165789 (v = vs.110) .aspx) – Will

Respuesta

6

Aunque sólo existe envdte100.dll en

c:\Program Files (x86)\Common Files\microsoft shared\MSEnv\PublicAssemblies\ 

las siguientes obras para Visual Studio 2012:

Type typeDTE = typeDTE = Type.GetTypeFromProgID("VisualStudio.DTE.11.0"); 

DTE objDTE = (DTE)Activator.CreateInstance(typeDTE, true); 
+0

Cuando intento ejecutar esto, el typeDTE es nulo. ¿Qué más tengo que hacer/referencia para que esto funcione, por favor?gracias –

+0

Lo más probable es que el Visual Studio 2012 no esté instalado. Pero no he encontrado esto todavía. – Libor

14

Creo que no entiendes cómo funciona el control de versiones EnvDTE.

Visual Studio es compatible con versiones anteriores de EnvDTE. Pero si una nueva versión de Visual Studio requiere o expone extensibilidad adicional, entonces MS lanza una versión más nueva de EnvDTE que expone esto a través de sus interfaces.

Así que, por ejemplo, podría usar clases EnvDTE80 para interactuar con Visual Studio 2012. Solo está limitado a la extensibilidad que estaba disponible en Visual Studio 2005. O podría usar EnvDTE90, y estar limitado a lo que estaba disponible cuando salió Visual Studio 2008.

Si no se ha lanzado una versión más nueva de EnvDTE con el último VS SDK, entonces está limitado a EnvDTE100.

+0

Gracias por aclarar eso. El principal problema es que desarrollo componentes de VS Toolbox y el instalador le permite decidir en qué versiones de VS desea que se integre el componente. Si utilizo solo EnvDTE100, entonces el componente estaría integrado solo en VS 2010 o tanto en 2010 como en 2012. Pero, ¿y si el usuario quiere integrarse solo en VS 2012 (usando EnvDTE)? Parece que la única forma de apuntar a una versión específica de Visual Studio es usar VSPackages ... – Libor

Cuestiones relacionadas