2012-08-25 25 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