﻿# 如何解決 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](https://code.google.com/p/linqtoexcel/) 這個套件出問題，一如往常的，我們總是透過 NuGet 安裝套件，不過經研究後發現，目前透過 NuGet 所下載到的 [LinqToExcel](https://code.google.com/p/linqtoexcel/) 套件，預設只有 32-bit ( x86 ) 版本，因此當你將網站安裝到預設以 64-bit 執行的 IIS 站台 (應用程式集區為 64 位元)，就會立刻遭遇到組件無法被載入的問題，完整錯誤訊息圖示如下：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/88f0523366bd56dd8fb9-image_2485.png)

要解決這個問題，就必須先移除透過 NuGet 安裝的 [LinqToExcel](https://code.google.com/p/linqtoexcel/) 套件：

```
PM> Uninstall-Package LinqToExcel
```

  
然後重新透過 NuGet 安裝 x64 版本的 [LinqToExcel\_x64](https://www.nuget.org/packages/LinqToExcel_x64/) 套件：

```
PM> Install-Package LinqToExcel_x64
```

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

如果你想要手動安裝 x64 套件，也可以到官網[下載 x64 版本](https://code.google.com/p/linqtoexcel/downloads/list)回來，如下圖示：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/282312b8d424ae2ab8a8-image_2486.png)

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

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/befc0d75d1c1a4dfcc57-image_2487.png)

**相關連結**

-   [Linq to Excel](https://code.google.com/p/linqtoexcel/) ( 主要官網 )
-   [LinqToExcel](http://www.nuget.org/packages/LinqToExcel) ( NuGet 套件 )
-   [LinqToExcel\_x64](https://www.nuget.org/packages/LinqToExcel_x64/) ( NuGet 套件 )
-   [LinqToExcel](https://github.com/paulyoder/LinqToExcel) ( GitHub 原始碼控管 )
-   [Linq to Excel Introduction](https://www.youtube.com/watch?v=t3BEUP0OTFM) ( YouTube 快速開發導覽影片 )
-   [Microsoft Access Database Engine 2010 可轉散發套件](https://www.microsoft.com/en-us/download/details.aspx?id=54920)   
    ( 若要用 ACE 引擎，請記得安裝 AccessDatabaseEngine\_X64.exe 這個 x64 版本 )
-   [asp.net mvc 3 - 64 bits alternatives to linq to excel - Stack Overflow](http://stackoverflow.com/questions/15741303/64-bits-alternatives-to-linq-to-excel/15741359#15741359)
-   [Access Database Engine 2010：安裝 64 位元與 32 位元版本的驅動程式在同一作業系統上](http://sharedderrick.blogspot.tw/2013/04/access-database-engine-2010-64-32.html)
-   [如果參考的dll有分x86、x64版本的話… - LBW- 點部落](https://web.archive.org/web/20140724105316/http://www.dotblogs.com.tw/lbwshift2/archive/2014/01/19/141683.aspx)
