到目前为止,我已成功使用EnvDTE来管理Visual Studio工具箱。
有定制的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项目和Toolbox?
答案 0 :(得分:14)
我认为你误解了EnvDTE版本的运作方式。
Visual Studio向后兼容EnvDTE的每个版本。但是,如果新版本的Visual Studio需要或公开额外的可扩展性,那么MS会发布更新版本的EnvDTE,通过其接口公开它。
因此,例如,您可以使用EnvDTE80类与Visual Studio 2012进行交互。您只能使用Visual Studio 2005中提供的可扩展性。或者您可以使用EnvDTE90,并且仅限于可用时的可用性。 Visual Studio 2008问世了。
如果尚未使用最新的VS SDK发布较新版本的EnvDTE,则限制为EnvDTE100。
答案 1 :(得分:6)
虽然
中仅存在 envdte100.dllc:\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);