[.NET] 解決 單元測試 Can not load 7-zip library or internal COM error! Message: failed to load library. 問題

[.NET] 解決 單元測試 Can not load 7-zip library or internal COM error! Message: failed to load library. 問題

續上篇[C#.NET] 使用 7-zip 解壓縮檔案,我的開發環境是Windows 7 x64 版本,所以很自然的我就裝了x64版本的 7-zip,當然直接就引用我安裝的版本

image

我在使用單元測試時測試 SevenZipSharp 時,一直會跳出 Can not load 7-zip library or internal COM error! Message: failed to load library.

image

本以為是自己的調用方式有誤,所以才會導致例外發生,可是相同的程式碼在 Winform / WPF Any CPU 2008/2010 專案可以執行,VS2010(測試專案 Any CPU)卻會出錯;一整個怪,當時很懷疑是單元測試的問題,但無法証明,只能不斷的上網尋找答案,自己也try過專案 Platform target 的設定,由Any CPU 改成x64 / x86

同時也循求朋友有無相同的情況,這時剛好 Bibby 敲我,正好逮到人問,詢問他可否協助,此時已經半夜兩點多了,真的感謝他的相挺(有人陪的感覺,亂好的),最後他用WPF專案測試沒出錯,這下更加確定是它在執行單元測試時會出錯,『不應該這樣的阿,到底是哪個環節出了問題』心裡不斷的這樣想著。

『換個 7z.dll 版本試試看吧!!!』,忽然有個聲音告訴自己。於是我就去下載 x86 的 7-zip 版本安裝。

image

然後在單元測試裡引用 x86 版本的 7z.dll,然後測試專案就不再拋出例外訊息了。

image


雖然問題解決了,但心中的結還是存在:

這是因為測試專案比較嚴謹的關係?

為什麼與測試專案相同設定的Winform / WPF專案也是使用Any CPU模式,確可以正確執行程式碼?


image

到底這是什麼原因,有人知道嗎?

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo