2012-08-25 16 views
8

Do tej pory z powodzeniem używam narzędzia EnvDTE do zarządzania programem Visual Studio Toolbox.Zastępstwo EnvDTE w Visual Studio 2012

Są dostosowane DLL do czynienia z różnymi wersjami Visual Studio:

EnvDTE.dll - wspólnych VS automatyzacji (prawdopodobnie działa na wszystkich wersjach)

EnvDTE80.dll - do czynienia z VS 2005

EnvDTE90.dll - do czynienia z VS 2008

EnvDTE100.dll - do czynienia z VS 2010

Jednak nie ma EnvDTE110 dla VS 2012. Czy to oznacza, że ​​jest to inny sposób automatyzacji VS niż korzystanie z tych bibliotek COM?

Jeśli tak, to jak na przykład pracować z projektami VS 2012 i Przybornikiem zdalnie w inny sposób niż przy użyciu EnvDTE?

+0

Kto mówi, że nie musi być EnvDTE110? – Will

+0

@Czy jeszcze trochę wyjaśniłem pytanie. – Libor

+0

Myślę, że pytanie, które możesz chcieć zadać, brzmi: "Chcę zrobić X na nowej funkcji Y w 2012 roku, ale nie mogę tego zrobić z EnvDTE100." Jak mogę to zrobić? " [EnvDTE jest tylko jednym z wielu punktów rozszerzalności w Visual Studio.] (Http://msdn.microsoft.com/en-us/library/bb165789 (v = vs.110) .aspx) – Will

Odpowiedz

6

Chociaż tylko envdte100.dll istnieje w

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

następujące prace dla Visual Studio 2012:

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

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

Kiedy próbuję to uruchomić, typDTE ma wartość null. Co jeszcze muszę zrobić/powoływać się na tę pracę?dzięki –

+0

Najprawdopodobniej Visual Studio 2012 nie jest zainstalowany. Ale jeszcze tego nie spotkałem. – Libor

14

Myślę, że nie rozumiesz, jak działa wersja EnvDTE.

Visual Studio jest wstecznie kompatybilny z każdą wersją EnvDTE. Ale jeśli nowa wersja Visual Studio wymaga lub eksponuje dodatkową rozszerzalność, to MS wypuszcza nowszą wersję EnvDTE, która ujawnia to poprzez swoje interfejsy.

Na przykład, możesz używać klas EnvDTE80 do interakcji z Visual Studio 2012. Jesteś ograniczony do rozszerzalności dostępnej w Visual Studio 2005. Lub możesz użyć EnvDTE90 i być ograniczony do tego, który był dostępny kiedy wyszło Visual Studio 2008.

Jeśli nowsza wersja EnvDTE nie została wydana przy użyciu najnowszego zestawu SDK VS, użytkownik jest ograniczony do EnvDTE100.

+0

Dzięki za wyjaśnienie tego. Głównym problemem jest to, że opracowuję komponenty VS Toolbox, a instalator pozwala zdecydować, w których wersjach VS chcesz zintegrować komponent. Jeśli używam tylko EnvDTE100, komponent będzie albo zintegrowany tylko w VS 2010, albo w 2010 i 2012 roku. Ale co, jeśli użytkownik chce zintegrować tylko w VS 2012 (przy użyciu EnvDTE)? Wygląda na to, że jedynym sposobem, w jaki można kierować określoną wersję Visual Studio jest użycie VSPackages ... – Libor