研究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也隨之發展。
office 2007:office 12 :xp
office 2010:office 14:win7
Visual Studio Tools for Office Runtime 包含一些非托管 DLL,Office 應用程序使用這些 DLL 加載運行時和 Office 解決方案。
當用戶啟動 VSTO 外接程序時,Office 應用程序將調入 VSTOEE.dll 以執行加載 Visual Studio Tools for Office Runtime 所需的任務。
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 執行以下操作:
-
它為每個解決方案程序集創建一個應用程序域。
-
它執行一組安全性檢查以驗證解決方案程序集是否有運行的權限。
-
它加載解決方案所需的 Office 的 .NET Framework 擴展的版本。
VSTOLoader.dll 還執行以下特定於 VSTO 外接程序的操作:
-
它實現 IDTExtensibility2 接口。 IDTExtensibility2 是一個 Microsoft Office 應用程序的所有 VSTO 外接程序都必須實現的 COM 接口。此接口定義應用程序為與 VSTO 外接程序通信而調用的方法。
-
它實現 IManagedAddin 接口。 Office 應用程序使用此接口來幫助加載 VSTO 外接程序。
注意,上圖中有個主互操作程序集,也就是PIA,這個程序集隨着office一起安裝,也可以單獨安裝。它公布了com組件的內部對象,也就是word模型,供插件調用。
