在Monodroid和Winforms之间共享SQLite代码

在Monodroid和Winforms之间共享SQLite代码,winforms,sqlite,mono,cross-platform,xamarin.android,Winforms,Sqlite,Mono,Cross Platform,Xamarin.android,我试图在三个应用程序之间共享我的所有业务逻辑代码:android应用程序、iOS应用程序和Winforms应用程序。所有这三个应用程序都需要访问本地Sqlite数据库,我假设我可以使用Mono.Data.Sqlite来实现这一点 因此,我设置了一个Android类库和一个常规的.NET类库,并将这些项目链接在一起。这适用于除Sqlite代码之外的所有代码。我不能仅仅引用Mono.Data.Sqlite.dll并让它在Winforms应用程序中工作吗?如果我这样做,它仍然无法修复以下错误: 找不到

我试图在三个应用程序之间共享我的所有业务逻辑代码:android应用程序、iOS应用程序和Winforms应用程序。所有这三个应用程序都需要访问本地Sqlite数据库,我假设我可以使用Mono.Data.Sqlite来实现这一点

因此,我设置了一个Android类库和一个常规的.NET类库,并将这些项目链接在一起。这适用于除Sqlite代码之外的所有代码。我不能仅仅引用Mono.Data.Sqlite.dll并让它在Winforms应用程序中工作吗?如果我这样做,它仍然无法修复以下错误:

找不到类型或命名空间名称“SqliteConnection”(是否缺少using指令或程序集引用?)

找不到类型或命名空间名称“SqliteDataReader”(是否缺少using指令或程序集引用?)

现在,我认为添加对Mono-Sqlite DLL的引用可以解决这个问题,但显然不能。它甚至找不到Mono名称空间本身

我想我可能需要一个专门为Windows而不是Android编译的Mono.Data.Sqlite DLL。这是正确的吗?如果是这样,我可以在某处找到一个预编译的二进制文件(初步搜索没有返回任何有用的结果)

或者我必须为SQLite代码编写一个包装器,以便它只在Winforms应用程序中使用System.Data.SQLite(我希望避免这种情况,因为方法不同)?部署到MonoTouch时,我也必须这样做吗?几乎所有的Mono框架都是这样吗

我只是想了解一下Mono的代码库共享以及它如何应用于多个平台。这是我迄今为止的第一个主要障碍。我的目标是为所有逻辑基本上都有一个代码库,然后只为每个平台编写本机UI代码


谢谢

您也可以在桌面上使用Mono.Data.Sqlite,但您可能希望引用桌面版本,而不是M4A版本

获取它的最简单方法可能是在桌面上下载并安装Mono,您可以从安装目录获取DLL

请注意,您的确切场景确实有效,这就是我们所做的。我们有一个桌面DALC类库项目,使用所有数据访问代码引用常规的Mono.Data.Sqlite

接下来,我们在同一个解决方案中有MonoTouch和Mono4Android项目。它们引用Mono.Data.Sqlite程序集的平台版本,我们所有的源文件都简单地链接在其中


因此,我们有一个代码库和三个程序集(每个平台一个)。

好的,我已经让它开始工作了。谢谢你的帮助!对于尝试相同操作的用户,可以在Windows Mono安装下的lib/Mono/gac/Mono.Data.Sqlite中找到Mono.Data.Sqlite.dll文件。您还需要从中获取sqlite3.dll(在下载下,在预编译的Windows二进制文件下查找sqlite-dll-win32-x86.zip)。在项目中引用Windows版本的Mono.Data.Sqlite.dll,并确保将sqlite3.dll粘贴到与可执行文件相同的文件夹中。现在很有魅力。再次感谢!