在自己的主機上透過 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 套件實在太幸福了! ^_^