2

我在我的 Mac 上克隆了这个示例,并且一开始就有几个项目无法构建。专门尝试构建 MovieRest 示例我收到错误:

错误 CS0584:内部编译器错误:无法导入类型ServiceStack.OrmLite.Sqlite.SqliteOrmLiteDialectProvider' fromServiceStack.OrmLite.SqliteNET,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' (CS0584) (ServiceStack.MovieRest)

我找不到任何关于在 Mac 上开始使用 ServiceStack 的帮助或示例,我觉得这很奇怪,因为它们在他们的概述演示中使用 MonoDevelop 非常困难。

4

1 回答 1

2

示例项目已升级为引用 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.dllbin/LD_LIBRARY_PATH

于 2012-12-21T04:41:08.150 回答