2012-08-25 21 views
8

Fino ad ora, ho utilizzato con successo EnvDTE per gestire Visual Studio Toolbox.sostituto EnvDTE in Visual Studio 2012

ci sono DLL personalizzate per affrontare le diverse versioni di Visual Studio:

EnvDTE.dll - comuni VS automazione (probabilmente funziona su tutte le versioni)

EnvDTE80.dll - a che fare con VS 2005

EnvDTE90.dll - a che fare con VS 2008

EnvDTE100.dll - a che fare con VS 2010

Tuttavia, non esiste EnvDTE110 per VS 2012. Ciò significa che si tratta di un modo diverso di automazione VS rispetto all'utilizzo di queste librerie wrapper COM?

In tal caso, come ad esempio lavorare in remoto con i progetti VS 2012 e Toolbox in altro modo rispetto all'utilizzo di EnvDTE?

+0

Chi dice che ci deve essere un EnvDTE110? – Will

+0

@Will ho chiarito la domanda un po '. – Libor

+0

Penso che la domanda che potreste voler porre sia "Voglio fare X con la nuova funzione Y nel 2012, ma non posso farlo con EnvDTE100. Come posso fare questo?" [EnvDTE è solo uno dei molti punti di estensibilità di Visual Studio.] (Http://msdn.microsoft.com/en-us/library/bb165789 (v = vs.110) .aspx) – Will

risposta

6

Anche se solo envdte100.dll esiste in

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

le seguenti opere per Visual Studio 2012:

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

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

Quando provo a eseguire ciò, typeDTE è null. Cos'altro devo fare/riferimento per rendere questo lavoro per favore?grazie –

+0

Molto probabilmente il Visual Studio 2012 non è installato. Ma non ho ancora incontrato questo. – Libor

14

Penso che tu abbia frainteso il modo in cui funziona il controllo delle versioni di EnvDTE.

Visual Studio è retrocompatibile con tutte le versioni di EnvDTE. Ma se una nuova versione di Visual Studio richiede o espone un'ulteriore estensibilità, MS rilascia una versione più recente di EnvDTE che espone questo attraverso le sue interfacce.

Quindi, ad esempio, è possibile utilizzare le classi di EnvDTE80 per interagire con Visual Studio 2012. Si è limitati all'estensibilità disponibile in Visual Studio 2005. Oppure è possibile utilizzare EnvDTE90 ed essere limitato a ciò che era disponibile quando uscì Visual Studio 2008.

Se una versione più recente di EnvDTE non è stata rilasciata con l'ultimo VS SDK, si è limitati a EnvDTE100.

+0

Grazie per aver chiarito questo. Il problema principale è che sviluppo componenti VS Toolbox e il programma di installazione consente di decidere in quali versioni di VS si desidera integrare il componente. Se utilizzo solo EnvDTE100, il componente potrebbe essere integrato solo in VS 2010 o nel 2010 e 2012. Ma cosa succede se l'utente vuole integrarsi solo in VS 2012 (utilizzando EnvDTE)? Sembra che l'unico modo per scegliere come target una versione specifica di Visual Studio sia l'uso di VSPackages ... – Libor