免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
深入理解vsto,開發(fā)word插件的利器

開發(fā)了vsto,客戶那邊也有一些反映插件安裝失敗或者加載不上的情況。于是我下定決定再理解下vsto的工作機(jī)制,如下圖:

    如上圖所示,我把vsto的解決方案分為兩部分,一部分是vsto Add-ins,另外一部分是Microsoft  Office  Applications。它們之間是如何交互的呢?要回答這個問題,必須對這兩部分有一定的認(rèn)識。首先vsto Add-ins是我們用c#開發(fā)的托管代碼,office是基于com產(chǎn)品。微軟提供了PIA(程序互操作集),它作為.net調(diào)用com的一個接口。它們之間的具體交互圖,見下一篇??傊?,vsto add-ins通過PIA,調(diào)用office的對象模型以及訂閱事件

 
  1. Globals.WordApplication.DocumentChange += new ApplicationEvents4_DocumentChangeEventHandler(WordApplication_DocumentChange);

  2. Globals.WordApplication.DocumentOpen += new ApplicationEvents4_DocumentOpenEventHandler(WordApplication_DocumentOpen);

  3. Globals.WordApplication.DocumentBeforeClose += new ApplicationEvents4_DocumentBeforeCloseEventHandler(WordApplication_DocumentBeforeClose);

  4. (Globals.WordApplication as ApplicationEvents2_Event).Quit += new ApplicationEvents2_QuitEventHandler(() => { Service.StopRemotingService(3); });

所謂office的對象模型,就是操作office的那些對象,下圖顯示了 Word 對象模型層次結(jié)構(gòu)中這些對象的一個視圖。

    

vsto addin是如何加載的?它的執(zhí)行過程是什么?

對照文章開頭的那個圖(標(biāo)出了順序),我們來理一理:

1、office應(yīng)用程序查看注冊表,通過注冊表得知vsto部署及應(yīng)用清單文件。

2、office應(yīng)用程序加載VSTOEE.dll,這是非托管的程序集,它屬于vsto runtime的一部分。它的作用是什么呢?為vsto runtime做一些準(zhǔn)備工作,比如說,檢查runtime的版本等。

3、VSTOEE.dll 加載 VSTOLoader.dll,這是vsto runtime的另一個非托管程序集(實(shí)現(xiàn)了com插件的接口,因?yàn)槲覀冎?,?shí)現(xiàn)office加載項(xiàng),本質(zhì)上是實(shí)現(xiàn)com插件的接口)。它做了兩件事情。

      3.1 加載了vsto runtime中的一些托管程序集。

      3.2 加載了.net framework。

4、vsto runtime 創(chuàng)建了一個app domain,加載vsto addin Assembly

經(jīng)過這4步,office就可以和vsto addin快樂地交互了。

附:平??蛻羰褂眠^程中的一些問題,我總結(jié)了如下:

1、在反復(fù)安裝卸載過程中出現(xiàn),安裝或者卸載都可能出現(xiàn)如下問題,解決辦法,安裝vc++ 2010,有的情況下可以解決,有的時(shí)候解決不掉,不知道why。

2、不知道什么情況下出現(xiàn)的錯誤,不過極少出現(xiàn):

解決方法:

3、未將對象引用到實(shí)例:

從上圖可以看出,追蹤到底層,發(fā)現(xiàn)framework中的異常。

解決方法,安裝.netframework 3.5 sp1 ,這個不一定能解決問題,具體哪出問題了,還不明確,畢竟是極少數(shù)的用戶有這問題,我初步懷疑是操作系統(tǒng)的問題,因?yàn)槲覀儑业暮芏嗳硕加帽I版的。

4、已經(jīng)安裝了另一個版本:

解決方法,這個好解決(與緩存有關(guān)系),一般藥到病除:

5、操作office時(shí)報(bào)錯:

解決方法:

"D:\Microsoft Office 2003\OFFICE11\EXCEL.EXE"  /regserver

6、加載項(xiàng)出現(xiàn)錯誤:

winxp,  office 2007

vsto是通過C:\Program Files\Common Files\microsoft shared\VSTO\10.0下的VSTOInstaller.exe進(jìn)行安裝的。雙擊VSTOInstaller.exe報(bào)無法找到入口的錯誤。后來發(fā)現(xiàn)XP等NT5.x系統(tǒng)安裝時(shí)都報(bào)【VSTOInstaller.exe無法定位程序輸入點(diǎn)GetFileVersionInfoExW】

原因是自動下載的runtime有烏龍,說好支持XP,但其實(shí)里面用到了NT6.x才有的API,比如上面那個GetFileVersionInfoExW,所以要么【發(fā)布>系統(tǒng)必備】中不要勾【創(chuàng)建用于安裝系統(tǒng)必備組件的安裝程序】,手動下載XP可用的runtime安裝(版本10.0.50903,而自動下載的版本以及下載中心的版本都比這個高,都有烏龍),下載地址:

http://download.microsoft.com/download/C/0/0/C001737F-822B-48C2-8F6A-CDE13B4B9E9C/vstor_redist.exe

需要注意:卸載錯版后相關(guān)文件也許會遺留,在【C:\Program Files\Common Files\Microsoft Shared\VSTO\10.0\】,這樣你就算裝了對版,文件也不會變,問題依舊,所以安裝對版之前需檢查并清空上述目錄。

以上是在實(shí)際當(dāng)中經(jīng)常出現(xiàn)的問題。我做了匯總。出了這些插件安裝的問題,其實(shí)還有一類問題,是word版本的問題。比如插件在office 2013 的某些低版本下運(yùn)行,可能會出問題。這時(shí)候把對應(yīng)的升級包打上,問題會迎刃而解。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
[小結(jié)]VSTO addin 安裝部署
淺談Excel開發(fā):一 Excel 開發(fā)概述
Create User Defined Function that changes the...
c#開發(fā)wps插件
Microsoft.Office.Interop.Word.
關(guān)于office2007和mathtype
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服