IManagedAddin 接口
实现 IManagedAddin 接口以创建加载托管 VSTO 外接程序的组件。此接口是在 2007 Microsoft 办公室 系统中添加的。
语法
[
object,
uuid(B9CEAB65-331C-4713-8410-DDDAF8EC191A),
pointer_default(unique),
oleautomation
]
interface IManagedAddin : IUnknown
{
HRESULT Load(
[in] BSTR bstrManifestURL,
[in] IDispatch *pdispApplication);
HRESULT Unload();
};
方法
下表列出了 IManagedAddin 接口定义的方法。
名称 | 描述 |
---|---|
IManagedAddin::Load | 在 Microsoft Office 应用程序加载托管 VSTO 外接程序时调用。 |
IManagedAddin::Unload | 在 Microsoft Office 应用程序即将卸载 VSTO 托管外接程序时调用。 |
注解
Microsoft 办公室应用程序(从 2007 Microsoft 办公室 系统开始)使用 IManagedAddin 接口来帮助加载 办公室 VSTO 外接程序。可以实现 IManagedAddin 接口,为托管 VSTO 外接程序创建自己的 VSTO 外接程序加载器和运行时,而不是使用 VSTO 外接程序加载程序(VSTOLoader.dll)和 Visual Studio Tools for 办公室 运行时。 有关更多信息,请参见 Architecture of VSTO Add-ins。
如何加载托管加载项
应用程序启动时,会执行以下步骤:
应用程序通过在以下注册表项下查找项来发现 VSTO 外接程序:
HKEY_CURRENT_U标准版R\Software\Microsoft\办公室\<application name>\Addins\
此注册表项下的每一项都是 VSTO 外接程序的唯一 ID。 通常情况下,这是 VSTO 外接程序程序集的名称。
应用程序在每个 VSTO 外接程序的注册表项下查找
Manifest
项。托管 VSTO 外接程序可以将清单
Manifest
的完整路径存储在HKEY_CURRENT_U标准版R\Software\Microsoft\办公室\<application name>\Addins\addins\<add-in ID> 下的条目中。 清单是一个文件(通常是 XML 文件),提供用于帮助加载 VSTO 外接程序的信息。如果应用程序找到
Manifest
项,便会尝试加载托管 VSTO 外接程序加载程序组件。 应用程序通过尝试创建实现 IManagedAddin 接口的 COM 对象来实现此目的。Visual Studio Tools for 办公室 运行时包括 VSTO 外接程序加载程序组件(VSTOLoader.dll),也可以通过实现 IManagedAddin 接口来创建自己的组件。
应用程序调用 IManagedAddin::Load 方法,并传入
Manifest
项的值。IManagedAddin::Load 方法执行加载 VSTO 外接程序所需的任务,例如为正在加载的 VSTO 外接程序配置应用程序域和安全策略。
有关Microsoft 办公室应用程序用于发现和加载托管 VSTO 外接程序的注册表项的详细信息,请参阅 VSTO 外接程序的注册表项。
实现 IManagedAddin 的指导
如果实现 IManagedAddin,则必须使用以下 CLSID 注册包含实现的 DLL:
99D651D7-5F7C-470E-8A3B-774D5D9536AC
Microsoft 办公室应用程序使用此 CLSID 创建实现 IManagedAddin 的 COM 对象。
注意
Visual Studio Tools for 办公室 运行时中的 VSTOLoader.dll 也使用此 CLSID。 因此,如果使用 IManagedAddin 创建自己的 VSTO 外接程序加载器和运行时组件,则不能将组件部署到运行依赖于 Visual Studio Tools for 办公室 运行时的 VSTO 外接程序的计算机。