[.NET][C#]無法載入檔案或組件的新原因

昨天是農曆七月初十星期五的下午,遇到了無法載入檔案或組件的小問題,但就是整整解了3小時,還因此加班了1.5小時。
這個什麼鬼一定要筆記一下,比Pokemon抓到新寶貝還刺激。

 

通常會出現的訊息:

  • System.IO.FileNotFoundException: 無法載入檔案或組件 'xxx' 找不到指定的模組
  • System.IO.FileNotFoundException: 無法載入檔案或組件 'xxx' 或其相依性的其中之一。 試圖載入格式錯誤的程式
  • System.IO.FileNotFoundException: 無法載入檔案或組件 'xxx' 。 找到的組件資訊清單定義與組件參考不符


通常發生這個訊息的原因:

  1. 參考路徑中沒有指定那顆dll,此時訊息後方會出現第一則:找不到指定的模組
  2. 32bit AP使用了64bit dll,或是64bit AP使用了32bit dll,此時訊息後方會出現第二則:試圖載入格式錯誤的程式
  3. 編譯AP時參考的可能是V1.0版,但實際環境那顆是V0.9版之類版本不對的問題。

 

起因:客戶端採購了一個美國廠商提供的元件,我們的AP配合著要引用,AP的選項也指定是64bit,執行檔目錄也確認有那顆可愛的dll,但就是一直吐第一則無法載入檔案或組件,也確認佈署的伺服器是64 bit,另外在AP本機執行,卻不會發生,程式也可以正常運作!

 

AP建置選項:

家裡LAB中與客戶端生產環境相符的OS環境

最後..

從美國原廠的官方網頁常見問題找到答案,可能是沒有安裝Visual C++ Redistributable,根據網頁上的說明,因為組件執行時需要VC++ runtime,一般開發人員的機器在安裝Visual Studio都會一起安裝,所以都可以正常使用,但生產環境的機器就不一定了。

 

好!快下載到LAB來測試:

https://www.microsoft.com/zh-tw/download/confirmation.aspx?id=48145

安裝:

安裝完畢重新再執行就正常了!

 

小結:

  • 申購前應詳閱公開說明書
  • 有時候要換個方向思考問題。
  • 下載的版本也要搭配32/64 bit以及Visual Studio 2010/2012/2013/2015喔。

 

下載點:

VC++ runtime下載