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

添加对 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 Basic 或 Visual C# 中手动添加对 EnvDTE 命名空间的引用

  1. 在**“解决方案资源管理器”中,右击项目节点或引用节点,再单击“添加引用”或者单击“项目”菜单上的“添加引用”**命令。

  2. 在**“添加引用”对话框中,单击所需组件类型的选项卡(如“.NET”“COM”**)。

  3. 向下滚动列表,选择 EnvDTEEnvDTE80EnvDTE90EnvDTE100

  4. 单击**“确定”**将两个新引用添加到项目。

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

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

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

  1. 在**“解决方案资源管理器”中右击项目节点,再单击“添加引用”或者单击“项目”菜单上的“添加引用”**命令。

  2. 单击**“添加新引用”,再单击“.NET”**选项卡。

  3. 向下滚动列表,选择 EnvDTEEnvDTE80EnvDTE90,然后单击**“添加”**。

  4. 单击**“确定”**以将新引用添加到项目。

  5. 若要为代码编辑器中的新程序集启用 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 )
    

请参见

任务

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

演练:创建向导

概念

外接程序注册

自动化对象模型图表

其他资源

创建外接程序和向导