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?
No code changes necessary. You can build it yourself.
apt-get install build-essentials unzip
unzip
andcd Source
,chmod +x
thecompile-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..so
file to the directory that has your application inUse
Mono.Data.SQLite.dll
on Linux. Take a look at the Mono manual to using SQLite on Linux or build the System.Data.SQLite.dll on Mono.You can also map the DLL:
I started the development in Windows, but then moved the application to Mono (Ubuntu 14), which is where the SQLite provider failed to load as OP described.
I had to recompile the System.Data.SQLite.dll using the following command:
However, after this I've got the following exception:
To fix this, I had to recompile the System.Data.SQLite.EF6.dll using the following command:
After copying all of the generated files to Mono project's bin directory, everything worked.
The SQLite provider source code version I had used was 1.0.98.1.
Hope this saves someone a lot of time...