【问题标题】:Sharing SQLite code between Monodroid and Winforms在 Monodroid 和 Winforms 之间共享 SQLite 代码
【发布时间】:2012-07-19 20:35:35
【问题描述】:

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    您也可以在桌面上使用 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 文件。您还需要从sqlite.org 获取 sqlite3.dll(在 Downloads 下,在 Precompiled Windows Binaries 下查找 sqlite-dll-win32-x86.zip)。在您的项目中引用 Windows 版本的 Mono.Data.Sqlite.dll,并确保将 sqlite3.dll 粘贴在与可执行文件相同的文件夹中。现在就像一个魅力。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2014-09-24
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    相关资源
    最近更新 更多