1

我刚开始学习 Xamarin,遇到了很多障碍,比如无法在 PCL 中使用标准 SQLite.Net。

在尝试了很多其他解决方案都没有成功之后,我发现 MvvmCross 完美地解决了我迄今为止的所有问题。

所以给斯图尔特点赞,真的很棒!

现在我在想,如果我也想要一个 ASP.Net Web 项目怎么办?我还能重用“核心”项目(所有平台共享的项目)吗?

我知道对于 HTML UI,我们无法将 UI 元素绑定到 ViewModel,因为 ViewModel 在服务器上,而 UI 在客户端上(实际上,对于我当前的 Web 项目,我所做的是 JSON 序列化 ViewModel 并发送它发送到客户端并使用 Knockout.js 进行绑定)。

但是即使我们需要为web项目重写ViewModel的逻辑,重用“Core”项目还是很有好处的。

所以我尝试创建一个 ASP.Net MVC 项目并引用使用 MvvmCross 和 MvvmCross Sqlite 插件的“Core”项目。

当我使用 nuget 在 web 项目中获取对 MvvmCross 的引用时,我得到的“MvvmCross 的平台特定版本”是 WPF 版本(我猜那是因为它们都使用 .Net Framework)。这应该不是问题,因为我只需要引用 WPF 需要的其他一些 dll。

但真正的问题是当我运行 web 项目时,我得到一个错误:

无法加载 DLL 'sqlite3':找不到指定的模块。

根据谷歌搜索结果,我将文件“System.Data.SQLite.dll”的名称更改为“sqlite3.dll”,然后我得到另一个错误:

无法加载文件或程序集“sqlite3”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

然后我被卡住了。那么我错过了什么还是根本行不通?

顺便说一句,我还创建了一个 WPF UI 项目,我也遇到了第一个错误,但是在我将文件“System.Data.SQLite.dll”重命名为“sqlite3.dll”后,一切正常,我没有得到第二个错误。而我从 Nuget 获得的“System.Data.SQLite.dll”是 x86 版本。

谢谢

4

1 回答 1

2

您应该可以在http://www.sqlite.org/download.html上下载官方的 sqlite3.dll for windows - 一位开发人员在https://github.com/slodge/MvvmCross/wiki/Sqlite-上写过这个插入

关于在服务器端 Web 应用程序中重用来自移动应用程序的服务的想法,Mvvmcross 本身并没有解决这个领域 - 从根本上说,对于大多数 Web 应用程序来说,生命周期和用户流(单个与多个)差别太大。一些“业务逻辑”和“模型”代码可以在网站上重复使用,但许多其他网站代码可能更好地围绕 nancy、fubumvc、simple web 等框架构建。

于 2013-09-14T11:08:41.537 回答