示例项目已升级为引用 NuGet 包,但 MovieRest 项目未引用ServiceStack.OrmLite.Sqlite.Mono NuGet 包(因此它们不同步)。我刚刚完成了这项工作,现在已经签入了。
由于我在这里使用 VS.NET 2012 进行了此操作,因此 VS.NET 解决方案文件也已升级,因此您需要在其 Beta 通道上打开最新的 MonoDevelop (3.1.1)。
注意:所有示例项目都是在 VS.NET 中开发的,但在托管在 Hetzner Ubuntu vServer 的 servicestack.net 上时部署在 Mono/Linux 上。我们并不关心在 MonoDevelop 中进行开发,而是关心在 Linux/Mono 主机上运行基于 ServiceStack 的软件。理想情况下,它应该两者兼得,但由于我们主要在 VS.NET 中进行开发,因此我们不会经常针对 MonoDevelop 进行测试。
Windows 上的 Sqlite 与 Mono + Linux / OSX
Sqlite 是一个非托管的本机 C 库,与 .NET 的其余部分不同,它不能在多个平台上运行相同的二进制文件。
在 Windows 上使用 .NET 时,用于 Windows/.NET 的包ServiceStack.OrmLite.Sqlite
引用Mono.Data.Sqlite.dll
将使用非托管文件夹(这就是为什么 sqlite.dll 需要设置为设置为“如果更新则复制”的内容资源的原因)。对于 Linux,它会查找sqlite3.so,而在 OSX 上,它会在您的库查找路径中查找libsqlite3.dylib 。如果您在主机操作系统中安装了 Sqlite,它会自动找到这些,如果没有,您需要在环境变量中包含这些共享库的路径。sqlite3.dll
bin/
LD_LIBRARY_PATH