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