如何使用C#跨平台应用程序上的SQLite?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (21)

有人可以帮助/指导我在Linux(MONO)和Windows(.NET)上使用SQLite lib,

在linux上,我使用本地sqlite客户端,并在Windows上使用http://sqlite.phxsoftware.com/

有没有一种方法可以像这样定义'使用'指令:

#if (linux)
  using Mono.Data.Sqlite;
#else
  using System.Data.SQLite;

另一个问题是两种实现方式的差异很小,例如:

cmd = new SqliteCommand(); // mono
cmd = new SQLiteCommand(); // sqlite.phxsoftware.com
提问于
用户回答回答于

我最近也遇到过这个问题:构建一个应用程序,该应用程序在Visual Studio上使用Windows上的Sqlite并将其部署到Ubuntu服务器框中进行生产。

我找到的最简单的解决方案是使用Sqlite的Mono驱动程序:Mono.Data.Sqlite

事情本来可能会更简单一些,但是.Net 4.0还有一个bug,它还没有包含在官方的Mono版本中。

所以你必须从源代码编译Mono:

  • 首先编译整个Mono的东西
  • 如果您想保留当前的Mono设置,则无需安装它
  • 复制Mono.Data.Sqlite.dll

当然,你可以“交叉编译”:我在Ubuntu服务器上构建了Mono,并在Windows .Net项目中使用了该DLL。

然后确保你的库路径中有本地的Sqlite库(sqlite3.dll for Windows和sqlite3.so for Linux):对于Windows,我只是将sqlite3.dll复制到Mono.Data.Sqlite.dll程序集旁边,对于Linux应该开箱即用。

你的项目应该能够在Windows / .Net和Linux / Mono环境中无缝工作。

用户回答回答于

扫码关注云+社区