8

到目前为止,我已经成功地使用EnvDTE来管理 Visual Studio Toolbox。

有定制的 DLL 来处理不同的 Visual Studio 版本:

EnvDTE.dll - 常见的 VS 自动化(可能适用于所有版本)

EnvDTE80.dll - 处理VS 2005

EnvDTE90.dll - 处理VS 2008

EnvDTE100.dll - 处理VS 2010

但是,VS 2012 没有 EnvDTE110。这是否意味着这些 VS 自动化的方式与使用这些 COM 包装库不同?

如果是这样,例如,除了使用 EnvDTE 之外,如何远程使用 VS 2012 项目和工具箱?

4

2 回答 2

15

我认为您误解了 EnvDTE 版本控制的工作原理。

Visual Studio 向后兼容每个版本的 EnvDTE。但是,如果新版本的 Visual Studio 需要或公开额外的可扩展性,则 MS 会发布更新版本的 EnvDTE,通过其接口公开这一点。

因此,例如,您可以使用 EnvDTE80 类与 Visual Studio 2012 进行交互。您仅限于 Visual Studio 2005 中可用的可扩展性。或者您可以使用 EnvDTE90,但仅限于 Visual Studio 2008 中可用的扩展性出来。

如果未使用最新的 VS SDK 发布较新版本的 EnvDTE,则仅限于 EnvDTE100。

于 2012-08-27T10:26:00.853 回答
7

虽然只有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);
于 2012-10-28T12:34:52.257 回答