使用 Visual Studio 中的 Office 开发人员工具创建的 VSTO 外接程序具有强调稳定性和安全性的体系结构功能,并使它们能够与 Microsoft Office 密切合作。 本主题描述 VSTO 外接程序的以下方面:
VSTO 外接程序如何使用 Microsoft Office 应用程序
适用于: 本主题中的信息适用于 VSTO 外接程序项目。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能。
有关创建 VSTO 外接程序的常规信息,请参阅 Office 解决方案开发概述(VSTO) 和 VSTO 外接程序编程入门。
了解 VSTO 外接程序
使用 Visual Studio 中的 Office 开发人员工具生成 VSTO 外接程序时,将创建由 Microsoft Office 应用程序加载的托管代码程序集。 加载程序集后,VSTO 外接程序可以响应应用程序中引发的事件(例如,当用户单击菜单项时)。 VSTO 外接程序还可以调用对象模型来自动执行和扩展应用程序,并可以使用 .NET Framework 中的任何类。
该程序集通过应用程序的主互作程序集与应用程序的 COM 组件通信。 有关详细信息,请参阅 Office 主互作程序集和 Office 解决方案开发概述(VSTO)。
如果为应用程序安装了多个 VSTO 外接程序,则会在不同的应用程序域中加载每个 VSTO 外接程序。 这意味着一个行为不正确的 VSTO 外接程序无法导致其他 VSTO 外接程序失败。 它还有助于确保应用程序关闭时,将从内存中卸载所有 VSTO 外接程序程序集。 有关应用程序域的详细信息,请参阅 应用程序域。
注释
仅当最终用户启动主机Microsoft Office 应用程序时,才能使用 Visual Studio 中的 Office 开发人员工具创建的 VSTO 外接程序。 如果应用程序以编程方式启动(例如使用自动化),VSTO 外接程序可能无法按预期工作。
VSTO 外接程序的组件
尽管 VSTO 外接程序程序集是主要组件,但其他几个组件在Microsoft Office 应用程序如何发现和加载 VSTO 外接程序方面发挥了重要作用。
注册表项
Microsoft Office 应用程序通过查找一组注册表项来发现 VSTO 外接程序。 有关 VSTO 外接程序使用的注册表项的完整列表,请参阅 VSTO 外接程序的注册表项。
生成解决方案时,Visual Studio 会在开发计算机上创建所有必需的注册表项,以便调试和运行 VSTO 外接程序。 有关详细信息,请参阅 生成 Office 解决方案。
如果使用 ClickOnce 部署解决方案,则发布过程生成的安装程序会自动在最终用户计算机上创建注册表项。 有关详细信息,请参阅 使用 ClickOnce 部署 Office 解决方案。
部署清单和应用程序清单
VSTO 外接程序使用部署清单和应用程序清单来标识和加载最新版本的 VSTO 外接程序程序集。 部署清单指向当前应用程序清单。 应用程序清单指向 VSTO 加载项程序集,并指定在该程序集内执行的入口点类。 有关详细信息,请参阅 Office 解决方案中的应用程序和部署清单。
Visual Studio 办公室工具运行时
若要运行使用 Visual Studio 中的 Office 开发人员工具创建的 VSTO 外接程序,最终用户计算机必须安装 Visual Studio Tools for Office 运行时。 运行时包括非托管组件和一组托管程序集。 非托管组件加载 VSTO 插件程序集。 托管程序集提供了对象模型,您的 VSTO 外接程序代码使用该模型来实现主机应用程序的自动化和扩展。
有关详细信息,请参阅 Visual Studio Tools for Office 运行时概述。
VSTO 外接程序如何与 Microsoft Office 应用程序一起工作
当用户启动Microsoft Office 应用程序时,应用程序将使用部署清单和应用程序清单来查找和加载最新版本的 VSTO 外接程序程序集。 下图显示了这些 VSTO 外接程序的基本体系结构。
注释
在面向 .NET Framework 4 或 .NET Framework 4.5 的 Office 解决方案中,解决方案通过使用嵌入在解决方案程序集中的 PIA 类型信息(而不是直接调用 PIA)调用主机应用程序的对象模型。 有关详细信息,请参阅 “设计和创建 Office 解决方案”。
加载过程
当用户启动应用程序时,将执行以下步骤:
应用程序检查注册表中是否存在使用 Visual Studio 中的 Office 开发人员工具创建的 VSTO 外接程序的条目。
如果应用程序找到这些注册表项,应用程序将加载 VSTOEE.dll,这会加载 VSTOLoader.dll。 它们是非托管的 DLL,是 Visual Studio 2010 Tools for Office Runtime 的加载组件。 有关详细信息,请参阅 Visual Studio Tools for Office 运行时概述。
VSTOLoader.dll 加载 .NET Framework 并启动 Visual Studio Tools for Office 运行时的托管部分。
Visual Studio Tools for Office 运行时会检查清单更新,并下载最新的应用程序和部署清单。
Visual Studio Tools for Office 运行时执行一系列安全检查。 有关详细信息,请参阅 安全 Office 解决方案。
如果 VSTO 外接程序受信任运行,Visual Studio Tools for Office 运行时将使用部署清单和应用程序清单来检查程序集更新。 如果程序集的新版本可用,运行时会将该程序集的新版本下载到客户端计算机上的 ClickOnce 缓存。 有关详细信息,请参阅 部署 Office 解决方案。
Visual Studio Tools for Office 运行时创建一个新的应用程序域,用于加载 VSTO 外接程序程序集。
Visual Studio Tools for Office 运行时将 VSTO 外接程序程序集加载到应用程序域中。
Visual Studio Tools for Office 运行时将在您的 VSTO 外接程序中调用 RequestComAddInAutomationService 方法(如果您已重写该方法)。
可以选择重写此方法,以向其他 Microsoft Office 解决方案公开 VSTO 外接程序中的对象。 有关详细信息,请参阅 来自其他 Office 解决方案的 VSTO 外接程序中的呼叫代码。
如果您已重写该方法,Visual Studio Tools for Office 运行时将在您的 VSTO 外接程序中调用 RequestService 方法。
可以选择性地重写此方法,以通过返回实现扩展性接口的对象来扩展 Microsoft Office 功能。 有关详细信息,请参阅 使用扩展性接口自定义 UI 功能。
注释
Visual Studio Tools for Office 运行时针对主机应用程序支持的每个扩展性接口分别调用 RequestService 该方法。 尽管首次调用 RequestService 方法通常发生在调用
ThisAddIn_Startup方法之前,但你的 VSTO 外接程序不应对何时调用 RequestService 方法或调用次数做出任何假设。Visual Studio Tools for Office 运行时会调用 VSTO 外接程序中的
ThisAddIn_Startup方法。 此方法是 Startup 事件的默认事件处理程序。 有关详细信息,请参阅 Office 项目中的事件。