接触vsto,开发word插件的利器

      研究word插件有一段时间了,如今该是总结的时候了。安全

      首先我们来了解下什么是vsto?所谓vsto,就是vs面向office提供的一个开发平台。一个开发平台至少包含两个要素:开发工具(sdk)和运行环境(runtime)。那么咱们先搭建开发环境,我用的是vs2010,选择的.netframework是 4.0,因为这个插件不是单独的一个解决方案,它和咱们的winform客户端强耦合在一块儿,不然,我确定选择至少vs2013,或者vs2015了。框架

      打开vs后,选择office开发模板。office插件开发分为两种,一种是文档级别的开发,就是你的应用程序只是针对特定的文档进行扩展,其它的文档不受影响。另外一种是外接应用程序,就是针对全部的文档起做用。我是针对全部的word文档进行插件开发。插件开发过程其实仍是至关轻松的,由于微软搭建了好了框架,咱们只须要专一本身的业务。工具

      说到此处,貌似山穷水尽,没得说了。但是背后隐藏的东西实在太多,只是一言难尽,那只好娓娓道来。开发工具

      正所谓,知己知彼,方能百战不殆。咱们来了解下word。虽然叫相同的名字,但是各个版本差别比较大。word 2003,以简洁的界面出如今window xp上面。我本身也用了很长时间。其实随着window版本的不断发展,word也随之发展。spa

office 2003:office 11 :xp
office 2007:office 12 :xp
office 2010:office 14:win7
office 2013:office 15:win7,win8,win10
office 2016:  office 16(云端):  win10
 
这些组合,我以为是很常规的组合,值得一提的是office 2013和office 2010用户数量确定是最多的(根据统计学原理)。office 2016的各个组件,无法单独安装(其实有很复杂的解决办法,通常用户可能真没办法),只能照单全收。这些是word版本与内部代号以及操做系统的对应关系。
      站在开发的角度,word开发用的是com组件技术。而咱们用.net去开发word插件,实际上是开发word的一个 加载项,要开发com加载项,必须实现IDTExtensibility2接口。这个接口包括5个方法。其中最重要的两个方法是OnConnection和OnStartupComplete。vsto底层封装了这些东西,暴露出来这两个事件,咱们在创建插件的时候,能够去实现本身的逻辑。
 
 office加载插件的机制以下(参考msdn):

Visual Studio Tools for Office Runtime 包含一些非托管 DLL,Office 应用程序使用这些 DLL 加载运行时和 Office 解决方案。操作系统

当用户启动 VSTO 外接程序时,Office 应用程序将调入 VSTOEE.dll 以执行加载 Visual Studio Tools for Office Runtime 所需的任务。.net

VSTOEE.dll 将确保为解决方案和安装的 Office 版本加载 Visual Studio Tools for Office Runtime 的正确版本。 虽然能够在同一台计算机上安装多个版本的 Visual Studio Tools for Office Runtime,可是每次仅安装 VSTOEE.dll 的一个实例。 这是安装在计算机上的运行时最新版本所附带的 VSTOEE.dll。插件

VSTOEE.dll 加载相应版本的 Visual Studio Tools for Office Runtime 以后,VSTOLoader.dll 执行加载解决方案程序集所需进行的大部分工做。VSTOLoader.dll 执行如下操做:orm

  • 它为每一个解决方案程序集建立一个应用程序域。对象

  • 它执行一组安全性检查以验证解决方案程序集是否有运行的权限。

  • 它加载解决方案所需的 Office 的 .NET Framework 扩展的版本。

VSTOLoader.dll 还执行如下特定于 VSTO 外接程序的操做:

  • 它实现 IDTExtensibility2 接口。 IDTExtensibility2 是一个 Microsoft Office 应用程序的全部 VSTO 外接程序都必须实现的 COM 接口。此接口定义应用程序为与 VSTO 外接程序通讯而调用的方法。

  • 它实现 IManagedAddin 接口。 Office 应用程序使用此接口来帮助加载 VSTO 外接程序。

 
word插件与office的交互以下图所示:

 注意,上图中有个主互操做程序集,也就是PIA,这个程序集随着office一块儿安装,也能够单独安装。它公布了com组件的内部对象,也就是word模型,供插件调用。

相关文章
相关标签/搜索