Mono / Ubuntu上的SQLite:DllNotFoundException SQLite.Interop.dll

时间:2017-01-25 21:13:20

标签: c# .net sqlite dll mono

我在Windows上开发了一个SQLite / C#应用程序,并将其部署在Ubuntu服务器上。

我在这里下载了MONO的预编译DLL https://system.data.sqlite.org/downloads/1.0.104.0/sqlite-netFx451-binary-Mono-2013-1.0.104.0.zip

我下载了源代码并使用此脚本编译了libSQLite.Interop.so,然后将libSQLite.Interop.so与其他DLL一起移动到网站的bin文件夹中 https://system.data.sqlite.org/index.html/artifact?ci=trunk&filename=Setup/compile-interop-assembly-release.sh

它仍然抱怨System.DllNotFoundException:SQLite.Interop.dll。我尝试将libSQLite.Interop.so重命名为SQLite.Interop.dll并且没有帮助。

在Ubuntu上让SQLite(EF6)在MONO上运行需要做些什么呢?

2 个答案:

答案 0 :(得分:0)

我通过扮演 http://blog.wezeku.com/2016/10/09/using-system-data-sqlite-under-linux-and-mono/ 告诉。

您可以克隆源代码,并在特定的linux-env中进行编译。 快捷方式:

Building System.Data.SQLite Interop under Linux
There’s no System.Data.SQLite package for Linux, so you’ll have to build it yourself on your target Linux machine. You can build using this procedure, which is tested in Raspbian Jessie on a Raspberry Pi 3 and Ubuntu 16.04.1 on a PC:

Download System.Data.SQLite full source code from this download page. There’s a ton of files there, and the one you should look for is named something like sqlite-netFx-full-source-<version no>.zip.
Unzip it and transfer it to a directory on your Linux machine. In the rest of this description, I’ll call this directory “<source root>”.
Issue these commands in a Linux terminal:
sudo apt-get update
sudo apt-get install build-essential
cd <source root>/Setup
chmod +x compile-interop-assembly-release.sh
./compile-interop-assembly-release.sh
Now, you will have a freshly built library file called libSQLite.Interop.so in the <source root>/bin/2013/Release/bin directory. This file might have execution permission which isn’t relevant for a library, so remove it by
chmod -x <source root>/bin/2013/Release/bin/libSQLite.Interop.so
Copy libSQLite.Interop.so the directory where your Mono/.NET application’s binaries reside (not the x64 or x86 subdirectories containing SQLite.Interop.dll), and you’re set to go.
And that, ladies and gentlemen, is how we do that!

答案 1 :(得分:-1)

根本不要使用互操作版本,而是坚持使用您可能已安装的libmono-sqlite4.0-cil软件包。如果sqlite dll随应用程序一起部署,请将其删除,以便系统从GAC中获取打包版本。