如何:创建解决方案外接程序

Visual Studio 2013 中已弃用 Visual Studio 的外接程序。 你应该升级外接程序到 VS 的扩展包。 有关升级的更多信息,请参见 。常见问题:将外接程序转换为 VSPackage 扩展

使用**“外接程序向导”**创建外接程序时,它会自动与集成开发环境 (IDE) 相关联。 它可以在 IDE 启动时加载,并会继续运行到卸载该向导或退出 IDE 为止。 或者,也可以将外接程序与解决方案相关联,使之成为解决方案外接程序。 当由于存在系统依赖项而希望只随特定解决方案加载外接程序时,或当要尽量减少不必要地使用系统资源的情况时,解决方案外接程序会很有用。 Visual Studio 加载解决方案时,会首先检查解决方案文件 (.sln) 以查看其是否引用外接程序。 如果引用,则会加载这些外接程序并调用与常规 Visual Studio 外接程序相同的 IDTExtensibility2 方法。

目前,**“外接程序向导”**不提供指示一个外接程序是否为解决方案外接程序的方法。 但是,通过一些小的修改可以使外接程序成为解决方案外接程序。 典型的外接程序将其信息存储在 .Addin XML 文件中(对于非托管 COM 外接程序,则存储在注册表中),而解决方案外接程序将其信息存储在此解决方案的 .SLN 文件中。

备注

解决方案外接程序必须使用传统的基于 COM 的注册方法注册。由于 Visual Studio 2005 外接程序使用新的 XML(.AddIn 文件)注册,因此必须将其设置为在 Windows 注册表中注册。下面的过程演示如何执行此操作。

备注

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。这些过程是在“常规开发设置”处于活动状态时开发的。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关详细信息,请参阅在 Visual Studio 中自定义开发设置

创建解决方案外接程序

下面的过程描述了如何创建解决方案外接程序。

创建解决方案外接程序

  1. 使用**“外接程序向导”**创建新的外接程序项目。 选择相应的语言,并接受所有其他默认设置。

  2. 右击该项目并选择**“属性”**。

  3. 单击**“生成”选项卡,选中“为 COM 互操作 注册”**框。

    这样,外接程序就可以作为 COM 对象被引用,该对象是解决方案外接程序所必需的。 虽然**“外接程序向导”**为项目创建了一个 .AddIn XML 文件,但是解决方案外接程序不需要此文件,所以您可以随时删除此文件。

  4. 由于解决方案外接程序为 COM 对象,因此必须在 Windows 注册。 若要执行此操作,请启动 Visual Studio 命令提示符并输入 regasm /codebase SolutionAddinName.dll

  5. 由于无法通过注册表将外接程序与解决方案文件相关联,因此必须使用代码执行此操作。 若要用解决方案文件注册外接程序,请使用解决方案的 AddIns 集合的 Add 方法。

    AddIns 返回一个 AddIns 集合。 它与 AddIns 类似,不同的是它只包含在指定的解决方案文件中注册的外接程序,而不是 Visual Studio 中的所有外接程序。 因此,若要将外接程序注册为解决方案外接程序,请使用 Solution.AddIns.Add。

    下面是 Visual Basic 和 Visual C# 中的示例。(应该使用这些行替换由外接程序向导提供的 OnConnection 方法中的外接程序变量声明。)

    Imports EnvDTE
    Imports EnvDTE80
    Imports EnvDTE90
    Imports EnvDTE100
    .
    .
    .
    Dim addin As EnvDTE.AddIn = _
    _applicationObject.Solution2.AddIns.Add("MyAddin1.Connect", "MyAddinName", "My add-in description", True)
    
    using EnvDTE;
    using EnvDTE80;
    using EnvDTE90;
    using EnvDTE100;
    .
    .
    .
    EnvDTE.AddIn addin = 
    _applicationObject.Solution.AddIns.Add(MyAddin.Connect, 
    "MyAddinName", "My add-in description", true);
    

请参见

任务

如何:创建外接程序

概念

控制项目和解决方案

VSProject2 对象介绍