System.DllNotFoundException on Mono SQLite

John Smith picture John Smith · Jan 22, 2014 · Viewed 10.9k times · Source

I've been trying to figure this out lately. It is working on my Windows machine, where I got SQLite from NuGet, but...

When I put System.Data.SQLite.dll and SQLite.Interop.dll straight from my Windows machine into Linux server it says that SQLite.Interop.dll is not found, but I am sure I see it next right to executable.

Then I tried to compile System.Data.SQLite.dll with /p:UseInteropDll=false, but with no luck. This time it says that System.Data.SQLite.dll is not found.

What is this "not found" mystery?

Answer

user3791372 picture user3791372 · Apr 2, 2017

No code changes necessary. You can build it yourself.

  1. apt-get install build-essentials unzip
  2. Download the SQLITE source code - you want the full source code. Currently called sqlite-netFx-full-source-1.0.104.0.zip.
  3. unzip and cd Source,
  4. chmod +x the compile-interop-assembly-release.sh build shell script, then run it ./compile-interop-assembly-release.sh. - It'll build an .so file in the ../bin directory.
  5. Copy this .so file to the directory that has your application in
  6. Run your application as normal.
  7. Note: Ensure that your SQLite database and the directory it's inside of are writable by the user you're trying to run as.