研究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
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 外接程序。
注意,上圖中有個主互操做程序集,也就是PIA,這個程序集隨着office一塊兒安裝,也能夠單獨安裝。它公佈了com組件的內部對象,也就是word模型,供插件調用。