1. 程式人生 > >未能載入檔案或程式集Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce1

未能載入檔案或程式集Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce1

未能載入檔案或程式集“Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”或它的某一個依賴項

程式中嵌入office功能, 解析excel中的資料, 然後儲存sqlserver2008資料庫中,但是web程式釋出後, 報上訴錯誤,錯誤原因解析如下:

錯誤 155 程式集“Microsoft.Office.Interop.Excel, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”所使用的“Microsoft.Vbe.Interop, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”版本高於所引用的程式集“Microsoft.Vbe.Interop, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c”的版本


也就是說程式集版本要統一, 但是對這些office程式集的引用往往依賴程式執行的主機環境,而主機環境中的提供的程式集版本往往比程式的要求要低.

所以解決這一問題的思路是,提供我們自己的程式集, 首先在開發環境中找到該程式集,如:我本機開發環境引用的程式集路徑是C:\Program Files\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office12, 從中選取Microsoft.Office.Interop.Excel.dll,和Microsoft.Vbe.Interop.dll兩個程式集檔案,拷貝到web專案的bin目錄下,同時確保web.config檔案中配置的版本就是拷貝的檔案. 可以通過下圖得到程式集的路徑:

程式執行的時候會首先在gac中查詢,如果找到,即呼叫主機環境下的這兩個檔案,否則,最終會在bin目錄下查詢.這樣問題即可解決, 其他思路往往是配置主機環境, 將其執行環境與開發環境設定一致, 但是對於租用的空間,往往不現實,除非是擁有獨立的主機.