有两种主要方法可为 VSPackage 提供自动化:通过实现特定于 VSPackage 的对象和实现标准自动化对象。 通常,它们一起使用来扩展环境的自动化模型。
VSPackage 专用对象
自动化模型中的某些位置要求你提供对 VSPackage 唯一的自动化对象。 例如,新项目需要只有 VSPackage 提供的不同对象。 这些对象的名称在注册表中输入,并通过调用环境 DTE 对象获取。
当自动化使用者使用通过标准对象的 Object 属性提供的对象时,还可以获取特定于 VSPackage 的对象。 例如,标准 Window 对象具有一个 Object 属性,该属性通常称为属性 Windows.Object 。 当消费者调用你在 VSPackage 中实现的窗口的 Window.Object 时,将传回一个特定的由你设计的自动化对象。
项目
VSPackage 可以通过自己的特定于 VSPackage 的对象扩展新项目类型的自动化模型。 为 VSPackage 提供新的自动化对象的主要目的是将您的独特项目对象与VCProject对象或VSProject2对象区分开。 当项目类型在解决方案中可能与其他项目类型并排出现时,能够区分和选择您所负责的项目类型的方法将非常有用。 有关详细信息,请参阅 “公开项目对象”。
事件
环境的事件架构为您提供了另一个位置,以追加您自己的特定于 VSPackage 的对象。 例如,通过创建自己的唯一事件对象,可以扩展项目的环境事件模型。 在将新项添加到您自己的项目类型时,您可能想要定义自己的事件。 有关详细信息,请参阅 “公开事件”。
窗口对象
调用时,Windows 可以将特定于 VSPackage 的自动化对象传回环境。 你实现一个派生自IVsExtensibleObject、IExtensibleObject或IDispatch的对象,该对象返回属性,并扩展它所在的窗口对象。 例如,可以使用此方法为安装在窗口框架中的控件提供自动化。 此对象以及它可能扩展的任何其他对象的语义设计由您决定。 有关详细信息,请参阅 “如何:为 Windows 提供自动化”。
“工具”菜单上的选项页
可以创建页面来扩展工具、选项自动化模型,方法是实现页面并将信息添加到注册表以创建自己的选项。 然后,可以通过环境对象模型调用页面,就像任何其他选项页一样。 如果通过 VSPackage 向环境添加的功能的设计需要选项页,则还应添加自动化支持。 有关详细信息,请参阅 “选项页的自动化支持”。
标准自动化对象
为了扩展项目的自动化,还可以实现标准自动化对象(派生自 IDispatch),这些对象与其他项目对象站在一起,并实现标准方法和属性。 标准对象的示例包括插入到解决方案层次结构中的项目对象,例如Projects,Project和ProjectItemProjectItems。 每个新项目类型都应实现这些对象(可能还有其他对象,具体取决于项目的语义)。
从某种意义上说,这些对象提供了 VSPackage 特定项目对象的相反优势。 标准自动化对象允许项目像支持相同对象的任何其他项目一样以通用方式使用。 因此,针对常规 Project 和 ProjectItem 对象编写的加载项可以用于任何类型的项目。 有关详细信息,请参阅 Project Modeling。