The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何解決 LinqToExcel 發生「無法載入檔案或組件」問題

前陣子有個同事的案子發生一件詭異的問題,在自己的主機��透過 Visual Studio 2013 與 IISExpress 開發與測試都還正常,但只要部署到測試機或正式機,就是沒辦法順利執行,卡關許久之後找我協助。我發現錯誤訊息確實很「一般」,訊息是:「無法載入檔案或組件 'LinqToExcel' 或其相依性的其中之一。 試圖載入格式錯誤的程式。」或是英文版的「Could not load file or assembly 'LinqToExcel' or one of its dependencies. An attempt was made to load a program with an incorrect format.」。如果你也遇到類似的問題(很有機會遇到),那麼你應該繼續看下去。

其實這問題我遇過好幾次,每次遇到這種狀況,我在第一時間都會直覺的認為是「檔案或目錄 NTFS 權限」的問題,所以每次都會被卡個幾分鐘才想到問題,我們先來看看這問題是怎樣發生的。

從錯誤訊息來看,是 LinqToExcel 這個套件出問題,一如往常的,我們總是透過 NuGet 安裝套件,不過經研究後發現,目前透過 NuGet 所下載到的 LinqToExcel 套件,預設只有 32-bit ( x86 ) 版本,因此當你將網站安裝到預設以 64-bit 執行的 IIS 站台 (應用程式集區為 64 位元),就會立刻遭遇到組件無法被載入的問題,完整錯誤訊息圖示如下:

要解決這個問題,就必須先移除透過 NuGet 安裝的 LinqToExcel 套件:

PM> Uninstall-Package LinqToExcel


然後重新透過 NuGet 安裝 x64 版本的 LinqToExcel_x64 套件:

PM> Install-Package LinqToExcel_x64


就這樣兩個步驟就能解決此問題,有 NuGet 套件實在太幸福了! ^_^

如果你想要手動安裝 x64 套件,也可以到官網下載 x64 版本回來,如下圖示:

下載後解壓縮,請將以下兩個組件 ( LinqToExcel.dllRemotion.Data.Linq.dll ) 加入專案參考即可:

相關連結