Microsoft.mshtml到底是什嗎?

來源:互聯網
上載者:User
MSHTML到底是什麼,現在越來越糊塗了。

Lostinet在結合 MSHTML 與 WebBrowser 產生美觀實用的 WinForm 應用程式一文給出的例子中引用的是MSHTML(COM組件)

對此,我在mshtml組件的引用一文中提出可以引用.Net組件Microsoft.mshtml,木野狐對此提出過反對的意見,我還沒搞明白呢,今天就遇到了實質的問題:

做的一個小程式,在WinXP作業系統上運行正常(電腦上裝過Visual Studio .Net,注意不止是.Net Framework),在另外兩台只裝過.Net Framework的Win2000作業系統的電腦上運行,涉及到MSHTML的表單出現了如下的錯誤提示:

(鬼才知道這是什麼提示,提示資訊一點都不詳細……)

經分析,確定是MSHTML的問題。不過我發現,在程式的運行目錄中竟然沒有Microsoft.mshtml.dll,換成引用COM組件(MSHTML)也是一樣,程式運行目錄中沒有一個dll檔案是關於mshtml的。

按照實現應用程式中的並行組件共用(已擴充)中的方法將“DLL\COM重新導向”,複製一份Microsoft.mshtml.dll到程式運行目錄中,在程式運行目錄中建立一個名為“程式檔案名稱.exe.local”的空檔案,程式就運行正常了。

然後發現,如果在項目中刪除對任何關於mshtml組件的引用,直接複製一份Microsoft.mshtml.dll檔案到程式運行目錄中,直接添加對該dll檔案的引用,程式同樣運行正常。

Oh,My God!MSHTML到底是什麼呀?一般的COM組件會將dll檔案自動複製到程式運行目錄中的呀?

呵呵,發現其實Microsoft.mshtml.dll在 系統路徑:\Program Files\Microsoft .Net\Primary Interop Assemblies\ 目錄下的(在給木野狐的回複中就發現了),原來,Visual Studio .NET 安裝程式自動註冊和安裝了ADO和MSHTML等通用COM 組件的primary Interop Assembly作為.NET架構提供的一種最佳化的運行庫可調用的封裝容器 (RCW)。

這樣,在引用MSHTML時應該盡量選用primary Interop Assembly,因為它帶有COM組件出版商數位簽章。

----------------------------------------------------------------

另外,我在網上看到過有人遇到過上面的錯誤,沒有找到解決方案,但我忘了是在哪裡看到的,希望他能看到這篇文章。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.