如何:创建解决方案外接程序
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 中自定义开发设置。
创建解决方案外接程序
下面的过程描述了如何创建解决方案外接程序。
创建解决方案外接程序
使用**“外接程序向导”**创建新的外接程序项目。 选择相应的语言,并接受所有其他默认设置。
右击该项目并选择**“属性”**。
单击**“生成”选项卡,选中“为 COM 互操作 注册”**框。
这样,外接程序就可以作为 COM 对象被引用,该对象是解决方案外接程序所必需的。 虽然**“外接程序向导”**为项目创建了一个 .AddIn XML 文件,但是解决方案外接程序不需要此文件,所以您可以随时删除此文件。
由于解决方案外接程序为 COM 对象,因此必须在 Windows 注册。 若要执行此操作,请启动 Visual Studio 命令提示符并输入 regasm /codebase SolutionAddinName.dll。
由于无法通过注册表将外接程序与解决方案文件相关联,因此必须使用代码执行此操作。 若要用解决方案文件注册外接程序,请使用解决方案的 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);