2012-08-25 50 views
8

到目前爲止,我已成功使用EnvDTE來管理Visual Studio Toolbox。Visual Studio 2012中的EnvDTE替代品

有自定義的DLL來處理不同的Visual Studio版本:

EnvDTE.dll - 共同VS自動化(可能適用於所有版本)

EnvDTE80.dll - 對付VS 2005

EnvDTE90.dll - 對付VS 2008

EnvDTE100.dll - 對付VS 2010

但是,VS 2012沒有EnvDTE110.這是否意味着這些VS自動化的方式不同於使用這些COM包裝庫?

如果是這樣,例如如何使用VS 2012項目和工具箱遠程使用與使用EnvDTE相比的其他方式?

+0

誰說必須有一個EnvDTE110? – Will

+0

@我會澄清一下這個問題。 – Libor

+0

我想你可能想問的問題是「我想在2012年爲X新特性Y做X,但我不能用EnvDTE100來做,我該怎麼做? [EnvDTE只是Visual Studio中許多可擴展點之一。](http://msdn.microsoft.com/zh-cn/library/bb165789(v=vs.110).aspx) – Will

回答

6

雖然只有envdte100.dll

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

存在的Visual Studio 2012以下工作:

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

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

當我嘗試運行此操作時,typeDTE爲空。我還需要做什麼/請參考才能完成這項工作?謝謝 –

+0

大多數情況下未安裝Visual Studio 2012。但我還沒有遇到過。 – Libor

14

我認爲你誤解了EnvDTE版本控制的工作原理。

Visual Studio向後兼容EnvDTE的每個版本。但是,如果新版本的Visual Studio需要或公開額外的可擴展性,那麼MS將發佈一個更新版本的EnvDTE,通過它的接口公開此版本。

例如,您可以使用EnvDTE80類與Visual Studio 2012進行交互。您僅限於Visual Studio 2005中可用的可擴展性。或者,您可以使用EnvDTE90,並將其限制爲可用的當Visual Studio 2008推出時。

如果較新版本的EnvDTE未與最新的VS SDK一起發佈,那麼您僅限於EnvDTE100。

+0

感謝您澄清。主要的問題是我開發VS Toolbox組件,安裝程序讓你決定你希望組件集成到哪個版本的VS中。如果我只使用EnvDTE100,那麼這個組件將只集成在VS 2010中,或者集成在2010和2012中。但是如果用戶想要集成到VS 2012中(使用EnvDTE)呢?看來,如何定位特定版本的Visual Studio的唯一方法是使用VSPackages ... – Libor