有人能帮助/指导我在Linux (MONO)和Windows (.NET)上使用SQLite lib吗?
在linux上我使用本机mono sqlite客户端,在windows上我使用http://sqlite.phxsoftware.com/。
有没有办法像这样定义“using”指令:
#if (linux)
using Mono.Data.Sqlite;
#else
using System.Data.SQLite;
另一个问题是两种实现的细微差别,比如:
cmd = new SqliteCommand(); // mono
cmd = new SQLiteCommand(); // sqlite.phxsoftware.com
等待任何帮助
如果你对有更好的了解,或者更简单的方法来做这件事,将非常感谢你的信息。
谢谢
发布于 2010-03-09 14:24:50
您可以使用csharp-sqlite,它是到Sql-Lite的C#的一个端口。它非常活跃,并且基于3.6.22版本的SqlLite。请参阅Miguel的comments,了解如何尝试加快速度。
发布于 2014-01-16 00:38:25
我最近也遇到了这个问题:通过Visual Studio在Windows上构建一个使用Sqlite的应用程序,并将其部署到Ubuntu Server box上进行生产。
我找到的最简单的解决方案是使用Sqlite的Mono驱动程序:。
事情本来可以简单一点,但是还没有打包到官方的Mono版本中。
所以你必须从源代码(the general instructions are here)编译Mono:
,则无需安装该库
当然你可以“交叉编译”:我已经在Ubuntu Server上构建了Mono,并在Windows .Net项目中使用了动态链接库。
然后确保您的库路径中有 ( Windows的sqlite3.dll和Linux的sqlite3.so ):对于Windows,我只需将SQLite3.dll复制到Mono.Data.Sqlite.dll程序集旁边,对于Linux,它应该可以开箱即用。
然后,您的项目应该在Windows/.Net和Linux/Mono环境中无缝工作。
发布于 2010-03-08 18:56:45
您可以使用别名来解决命名差异
#if (linux)
using SqlCommand = Mono.Data.Sqlite.SqliteCommand;
#else
using SqlCommand = System.Data.SQLite;
我认为为不同的构建使用不同的程序集是一项更复杂的任务。您可以查看MSBuild文档
https://stackoverflow.com/questions/2400668
复制相似问题