在Monodroid和Winforms之间共享SQLite代码

时间:2012-07-18 21:58:08

标签: winforms sqlite mono cross-platform xamarin.android

我正在尝试在三个应用程序中共享所有业务逻辑代码: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代码。

谢谢!

1 个答案:

答案 0 :(得分:1)

您也可以在桌面上使用Mono.Data.Sqlite,但您可能想要引用桌面版而不是M4A版。

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

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

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

所以我们有一个代码库和三个程序集(每个平台一个)。