2012-08-25 42 views
8

Cho đến bây giờ, tôi đã sử dụng thành công EnvDTE để quản lý Hộp công cụ Visual Studio.Thay thế EnvDTE trong Visual Studio 2012

Có DLL tùy chỉnh để đối phó với Visual Studio phiên bản khác nhau:

EnvDTE.dll - chung VS tự động (có thể hoạt động trên tất cả các phiên bản)

EnvDTE80.dll - để đối phó với VS 2005

EnvDTE90.dll - để đối phó với VS 2008

EnvDTE100.dll - để đối phó với VS 2010

Tuy nhiên, không có EnvDTE110 cho VS 2012. Điều đó có nghĩa đây là cách khác nhau của VS tự động hóa hơn bằng cách sử dụng các thư viện COM wrapper?

Nếu có, làm cách nào để làm việc với các dự án VS 2012 và Hộp công cụ từ xa theo cách khác hơn là sử dụng EnvDTE?

+0

Ai nói đó có phải là một EnvDTE110? – Will

+0

@Tôi có làm rõ câu hỏi một chút không. – Libor

+0

Tôi nghĩ câu hỏi mà bạn có thể muốn hỏi là "Tôi muốn làm X với tính năng Y mới vào năm 2012, nhưng tôi không thể làm điều đó với EnvDTE100. Làm cách nào tôi có thể làm điều này?" [EnvDTE chỉ là một trong nhiều điểm mở rộng trong Visual Studio.] (Http://msdn.microsoft.com/en-us/library/bb165789 (v = vs.110) .aspx) – Will

Trả lời

6

Mặc dù chỉ envdte100.dll tồn tại trong

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

các công việc sau cho Visual Studio 2012:

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

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

Khi tôi cố gắng để chạy này, typeDTE là null. Tôi phải làm gì/tham khảo để thực hiện công việc này?thanks –

+0

Có lẽ hầu hết các Visual Studio 2012 không được cài đặt. Nhưng tôi chưa gặp phải điều này. – Libor

14

Tôi nghĩ bạn hiểu lầm cách phiên bản EnvDTE hoạt động.

Visual Studio tương thích ngược với mọi phiên bản của EnvDTE. Nhưng nếu một phiên bản mới của Visual Studio yêu cầu hoặc cho thấy khả năng mở rộng bổ sung, thì MS sẽ phát hành phiên bản EnvDTE mới hơn cho thấy điều này thông qua các giao diện của nó. Ví dụ:

Vì vậy, bạn có thể sử dụng các lớp EnvDTE80 để tương tác với Visual Studio 2012. Bạn chỉ bị giới hạn ở khả năng mở rộng có sẵn trong Visual Studio 2005. Hoặc bạn có thể sử dụng EnvDTE90 và giới hạn khi Visual Studio 2008 ra mắt.

Nếu phiên bản EnvDTE mới hơn chưa được phát hành với SDK VS mới nhất, thì bạn bị giới hạn ở EnvDTE100.

+0

Cảm ơn bạn đã làm rõ điều đó. Vấn đề chính là tôi phát triển các thành phần của VS Toolbox và trình cài đặt cho phép bạn quyết định phiên bản nào của VS bạn muốn thành phần tích hợp. Nếu tôi chỉ sử dụng EnvDTE100 thì thành phần sẽ chỉ được tích hợp trong VS 2010 hoặc cả năm 2010 và 2012. Nhưng nếu người dùng muốn tích hợp chỉ trong VS 2012 (sử dụng EnvDTE) thì sao? Có vẻ như cách duy nhất làm thế nào để nhắm mục tiêu phiên bản cụ thể của Visual Studio là sử dụng VSPackages ... – Libor

Các vấn đề liên quan