如何:添加对自动化命名空间的引用

在 Visual Studio 2013 中,弃用外接程序。 我们建议您将外接程序升级到 VSPackage 扩展。 有关如何升级的更多信息,请参阅 常见问题:将外接程序转换为 VSPackage 扩展

添加对 EnvDTEEnvDTE80EnvDTE90EnvDTE100 的引用时,可以选择使用 .NET 程序集或者使用 COM 库版本。 您的选择取决于项目。

如果您在维护一个较旧的应用程序或外接程序,则可能需要使用 EnvDTEEnvDTE80EnvDTE90EnvDTE100 的 COM 版本。 但是,如果您在创建一个新的托管应用程序或外接程序,则很可能需要使用 .NET 程序集版本。

使用**“外接程序向导”**以任何编程语言创建外接程序时或者创建宏时,该进程将添加对 EnvDTE、EnvDTE90、Env90 和 Env100 程序集的引用,并且在包含 Connect 类的文件中,该进程将 using(在 Visual Basic 中为 imports)指令添加到 EnvDTE 和 EnvDTE80 命名空间中。

但是,若要访问用**“外接程序向导”创建的宏或外接程序以外的自动化对象,则必须手动添加程序集引用和 using(在 Visual Basic 中为 imports)指令。 手动添加程序集引用时,您还必须将程序集的“嵌入互操作类型”**属性设置为 false。 为此,请执行以下步骤:

  1. 添加程序集引用。 在“解决方案资源管理器”中,打开项目的快捷菜单,选择“添加”、“引用”,然后选择“添加新引用”按钮。 在“.NET”选项卡,选择程序集,然后选择“确定”按钮。 在 C# 项目中,您将在**“解决方案资源管理器”中的“引用”节点下看到该程序集的名称。 在 Visual Basic 项目中,您将在项目属性中看到该程序集的名称。 在“解决方案资源管理器”中右击该项目并选择“属性”。 将出现属性页。 从左窗格中选择“引用”**页。

  2. 选择程序集引用,然后在**“属性”窗口中将程序集的“嵌入互操作类型”**属性设置为 false。

在向命名空间添加引用后,您很可能要对 DTEDTE2 对象进行编程。 有关详细信息,请参阅 如何:获取对 DTE 和 DTE2 对象的引用

备注

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关详细信息,请参阅 在 Visual Studio 中自定义开发设置

在 Visual Basic 或 Visual C# 中手动添加对 EnvDTE 命名空间的引用

  1. 在“解决方案资源管理器”中,打开项目的快捷菜单,选择“添加”、“引用”,然后选择“添加新引用”按钮。

  2. 在“添加引用”对话框,在您希望的组件类型标签上—例如“.NET”或“COM”—选择 EnvDTEEnvDTE80EnvDTE90EnvDTE100

  3. 选择“确定”按钮以将两个新引用添加到项目。

  4. 若要为代码编辑器中的新程序集启用 Intellisense,请在项目的模块或类的顶端添加下面的内容之一:

    Imports EnvDTE
    Imports EnvDTE80
    Imports EnvDTE90
    Imports EnvDTE100
    
    using EnvDTE;
    using EnvDTE80;
    using EnvDTE90;
    using EnvDTE100;
    

在托管 Visual C++ 中手动添加对 EnvDTE 命名空间的引用

  1. 在“解决方案资源管理器”中,打开项目的快捷菜单,选择“添加”、“引用”,然后选择“添加新引用”按钮。

  2. 在“.NET”选项卡,选择 EnvDTEEnvDTE80EnvDTE90,然后选择“添加”按钮。

  3. 选择“确定”以将新引用添加到项目。

  4. 若要为代码编辑器中的新程序集启用 IntelliSense,请在主项目文件的顶端添加下面的内容:

    // Visual C++
    #using <envdte.dll>
    #using <envdte80.dll>
    #using <envdte90.dll>
    #using <envdte100.dll>
    

向非托管 (ATL) Visual C++ 中的 EnvDTE 和 EnvDTE80 命名空间添加引用

  • 在适当的头文件或源文件中,添加下面的内容:

    #pragma warning( disable : 4278 )
    #pragma warning( disable : 4146 )
    //The following #import imports EnvDTE based on its LIBID.
    #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") 
    lcid("0") raw_interfaces_only named_guids
    //The following #import imports EnvDTE80 based on its LIBID.
    #import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("8.0") 
    lcid("0") raw_interfaces_only named_guids
    //The following #import imports EnvDTE90 based on its LIBID.
    #import "libid: 2ce2370e-d744-4936-a090-3fffe667b0e1" version("9.0") 
    lcid("0") raw_interfaces_only named_guids
    //The following #import imports EnvDTE100 based on its LIBID.
    #import "libid: 26ad1324-4b7c-44bc-84f8-b86aed45729f" version("10.0") 
    lcid("0") raw_interfaces_only named_guids
    #pragma warning( default : 4146 )
    #pragma warning( default : 4278 )
    

请参见

任务

如何:使用外接程序管理器控制外接程序

演练:创建向导

概念

外接程序注册

自动化对象模型图表

其他资源

创建外接程序和向导