Unable to load DLL 'SQLite.Interop.dll' (0x8007007E) using nuget version 22.214.171.124 of System.Data.Sqlite
(1) By anonymous on 2021-06-22 12:41:28 [link] [source]
I just updated my project to version 126.96.36.199 of System.Data.Sqlite and I got an error when loading SQLite.Interop.dll. I was able to minimize to a simple example, available here https://github.com/andrewhickman/sqlite-repro
To reproduce, run this docker command (using windows containers) on the latest commit in that repository
docker build . -t sqlite-repro ; docker run -it --rm sqlite-repro
I get the following exception
Unhandled exception. System.DllNotFoundException: Unable to load DLL 'SQLite.Interop.dll' or one of its dependencies: The specified module could not be found. (0x8007007E) at System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op) at System.Data.SQLite.SQLite3.StaticIsInitialized() at System.Data.SQLite.SQLiteLog.PrivateInitialize(String className) at System.Data.SQLite.SQLiteLog.Initialize(String className) at System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework) at System.Data.SQLite.SQLiteConnection..ctor(String connectionString) at SqliteRepro.Program.Main(String args) in C:\source\Program.cs:line 10
Running the same command on the previous commit (37ec7a771d30ba1b6a0d506efc7d8ab858852e31), it runs successfully. The only difference is going from version 188.8.131.52 to 184.108.40.206 of System.Data.Sqlite
dotnet run in the repository works fine on both versions on my machine (again using Windows)
(2) By Larry Brasfield (larrybr) on 2021-06-22 13:56:59 in reply to 1 [source]
This recent post describes a problem created by an MSBuild change which I suspect has led to your issue. Either getting an MSBuild update or manually specifying another target to get SQLite.Interop.dll copied should function as a work-around. Or you could just copy the DLL yourself until that update is generally available.
(3) By anonymous on 2021-07-17 14:30:32 in reply to 2 [link] [source]
This actually seems to be caused by some extra dependencies in the latest version of SQLite.Interop.dll.
Using dumpbin I compared the dependencies between version 220.127.116.11 and 18.104.22.168 and these new dependencies were added:
mscoree.dll 1801473F0 Import Address Table 180186090 Import Name Table 0 time date stamp 0 Index of first forwarder reference 6F StrongNameSignatureVerificationEx 71 StrongNameTokenFromAssembly 62 StrongNameFreeBuffer F CorBindToRuntimeEx 61 StrongNameErrorInfo WINTRUST.dll 1801473E0 Import Address Table 180186080 Import Name Table 0 time date stamp 0 Index of first forwarder reference 82 WinVerifyTrust
mscoree.dll is not available in in the mcr.microsoft.com/dotnet/core/runtime image I was using. If I copy it in from a different image, SQLite.Interop.dll is loaded successfully
(4) By Norbert Sz. (NorbertSzakacs) on 2022-02-16 12:02:41 in reply to 3 [link] [source]
I can confirm that a MSCOREE.DLL reference has been introduced for SQLite.Interop.dll in the Stub.System.Data.SQLite.Core.NetStandard nuget package somewhere between 22.214.171.124 and 126.96.36.199 (latest atm).
This dependency leads to exceptions like this:
System.DllNotFoundException : Unable to load DLL 'SQLite.Interop.dll' or one of its dependencies: The specified module could not be found. (0x8007007E)
at System.Data.SQLite.UnsafeNativeMethods.sqlite3_open_interop(Byte utf8Filename, Byte vfsName, SQLiteOpenFlagsEnum flags, Int32 extFuncs, IntPtr& db) at System.Data.SQLite.SQLite3.Open(String strFilename, String vfsName, SQLiteConnectionFlags connectionFlags, SQLiteOpenFlagsEnum openFlags, Int32 maxPoolSize, Boolean usePool)
The used docker image was: mcr.microsoft.com/dotnet/sdk:6.0.101
Workarounds can be: - mscoree.dll deploy as content in the project - downrgade System.Data.SQLite to 1.0.113
(5) By Danny Horodniczy (dhorodniczy) on 2022-03-24 15:00:22 in reply to 4 [link] [source]
I don't understand what you mean for the 1st workaround. Could you please elaborate? :)
I downgraded to System.Data.SQLite 1.0.113. Unfortunately, it has both:
as runtime dependencies, which I believe after updating to .NET 6 causes NETSDK1152, when performing a
NETSDK1152: Found multiple publish output files with the same relative path: C:\Users\320161687\.nuget\packages\system.data.sqlite.core\188.8.131.52\runtimes\win-x64\native\netstandard2.0\SQLite.Interop.dll, C:\Users\320161687\.nuget\packages\system.data.sqlite.core\184.108.40.206\runtimes\win-x64\native\netstandard2.1\SQLite.Interop.dll
(6.1) By mistachkin on 2022-03-25 00:40:40 edited from 6.0 in reply to 3 [link] [source]
Use of these functions is by design. According to MSDN, these functions are deprecated; however, they should still be available, e.g. the function StrongNameSignatureVerificationEx:
Any Windows installation that is missing these files and/or the exports being used is broken.