[Mono-list] Using System.Data.SQLite from both windows and linux
Jonathan Pryor
jonpryor at vt.edu
Tue Jan 19 13:53:08 EST 2010
On Mon, 2010-01-18 at 13:46 -0600, Dan Winslow wrote:
> I am trying to write a single source that can run on both windows and
> linux, and that uses Sqlite as its data storage. I am using the
> current mono build ( I built from latest tarball ).
> 1. I downloaded and installed the System.Data.SQLite ado provider
> from phxsoftware.
There are two providers, the "managedonly" provider and the "normal"
provider.
YOU CANNOT USE THE NORMAL PROVIDER ON Mono/Linux, and I see from your
message that you're attempting to do so.
The reason being that the normal provider is a mixed-mode assembly,
bundling the native SQLite DLL with the managed ADO.NET wrapper in one
assembly. Mono does not support these; see:
http://www.jprl.com/Blog/archive/development/mono/2008/Jan-27.html
There are two solutions to using SQLite portably between Linux &
Windows:
1. Use the managedonly System.Data.SQLite provider. You will then need
to distribute the SQLITE3.DLL native library with your app.
2. Use Mono.Data.Sqlite. This is basically the managedonly
System.Data.SQLite provider with a different namespace and
capitalization scheme. The advantage is that, on Linux, the assembly
and native library are handled by the Linux distro (and thus don't
need to be bundled with your app), but on .NET you'll need to
distribute both Mono.Data.Sqlite.dll and sqlite3.dll with your app
(which is the same as with managedonly System.Data.SQLite).
- Jon
More information about the Mono-list
mailing list