【问题标题】:EnvDTE substitute in Visual Studio 2012Visual Studio 2012 中的 EnvDTE 替代品
【发布时间】:2012-08-25 06:10:52
【问题描述】:

到目前为止,我已经成功使用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 项目和工具箱?

【问题讨论】:

  • 谁说必须要有 EnvDTE110?
  • @我能澄清一下这个问题吗。
  • 我想你可能想问的问题是“我想在 2012 年对新功能 Y 做 X,但我不能用 EnvDTE100 做。我该怎么做?” EnvDTE is only one of many extensibility points within Visual Studio.
  • @Will 好的。一年前我做了一个similar question,但没人知道。 VSPackage 由于一些令人讨厌的“包加载密钥”问题而无法工作,因此 EnvDTE 最终成为唯一可行的选择。但即使是 EnvDTE 现在也是一个问题。
  • 自 2008 年以来不再有包加载密钥,因此请重新考虑该解决方案。

标签: visual-studio visual-studio-2012 envdte


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您澄清这一点。主要问题是我开发了 VS Toolbox 组件,安装程序让您决定希望组件集成到哪些版本的 VS。如果我只使用 EnvDTE100,那么该组件要么仅集成在 VS 2010 中,要么集成在 2010 和 2012 中。但是如果用户只想集成在 VS 2012 中(使用 EnvDTE)怎么办?似乎如何针对特定版本的 Visual Studio 的唯一方法是使用 VSPackages...
【解决方案2】:

虽然只有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);

【讨论】:

  • 当我尝试运行它时,typeDTE 为空。我还需要做什么/参考才能完成这项工作吗?谢谢
  • 很可能没有安装 Visual Studio 2012。但是我还没有遇到过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
相关资源
最近更新 更多