天天看點

uwp - 解決使用EntityFramework時報錯“unable to load dll 'sqlite3':the specified module could not be found”

在使用uwp的ef過程中碰到一萬個問題快折騰死我了,好在最後終于解決掉所有問題,但願如此,因為在這之前先後發生不同的報錯,不知道後面還會碰到新的問題不。

uwp - 解決使用EntityFramework時報錯“unable to load dll 'sqlite3':the specified module could not be found”

其中一個問題是這樣的,生成能正常生成,但是啟動程式後在運作到:“db.Database.Migrate();” 時引發異常,提示unable to load dll 'sqlite3':the specified module could not be found.(exception from hresult:0x8007007e),奇怪,我已經引用了Microsoft.EntityFrameworkCore.Sqlite了呀,怎麼會提示找不到子產品,網上搜了一下,添加引用:“SQLite for universal windows platform”,然後運作,到這一步也許可能你已經解決這個問題,如果還沒有,而且你碰到這樣一個問題,以x64在本地計算機上運作uwp應用,正常,沒報錯,但是,切到x86放在仿真機上運作又報上面這個錯,切到arm也報,那麼别急,仔細看下生成輸出有沒有提示沒引用vc++ runtime,如果有,就在引用擴充中添加“Visual C++ 2015 Runtime for Universal Window....”。現在再運作是不是解決了呢?

以下是我的完整引用截圖,如果上面的方法沒解決就對照一下我的引用把沒有引用的引用上,MvvmLight就不需要了,其他的都是必須的:

uwp - 解決使用EntityFramework時報錯“unable to load dll 'sqlite3':the specified module could not be found”

附加:

同時引用sqlite for.platform和microsoft.en..sqlite兩個的話,以ARM真機運作/調試是沒問題的,但是以x86仿真機(模拟器)運作、以x64本地計算機模式運作時會報一個錯:

uwp - 解決使用EntityFramework時報錯“unable to load dll 'sqlite3':the specified module could not be found”

負載包含兩個或更多具有相同目标路徑sqlite3.dll

對于這個問題,我暫時找不到更好的解決辦法,是以,建議:如果你不介意用真機/本地計算機做開發調試并舍棄仿真機的話就不用管他,就以arm模式在真機上運作測試就好,如果你想在電腦上運作就暫時把sqlite for u....platform的引用去掉,就可以以x64的模式運作在本地計算上,但是如果開發完成要記得重新引用,不然無法在真機上建立資料庫,就會重新報錯:“unable to load dll 'sqlite3':the specified module could not be found.(exception from hresult:0x8007007e)”;同時引用兩個時你沒法在x86模式的仿真機上運作,也會提示“負載包含兩個或更多具有相同目标路徑sqlite3.dll”,是以,如果使用ef開發,你隻能在本地計算機上/真機上測試運作,舍棄仿真機。在uwp上使用EntityFramework似乎很麻煩,也許是我自己的問題,但我的解決方案是這樣的,如果我找到更好的辦法會第一時間更新部落格。

寫的好像很亂。。。