我在我的Mac上克隆了这个例子,并且在门外有几个不能构建的项目。特别是尝试构建MovieRest示例我收到错误:
错误CS0584:内部编译器错误:无法导入类型ServiceStack.OrmLite.Sqlite.SqliteOrmLiteDialectProvider' from
ServiceStack.OrmLite.SqliteNET,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'(CS0584)(ServiceStack.MovieRest)
我在Mac上开始使用ServiceStack时找不到任何帮助或示例,我觉得这很奇怪,因为他们在概述演示中使用MonoDevelop非常困难。
答案 0 :(得分:2)
示例项目已升级为引用NuGet包,但MovieRest项目未引用ServiceStack.OrmLite.Sqlite.Mono NuGet包(因此它们不同步)。我刚刚完成了这项工作并立即进行了检查。
自从我在VS.NET 2012中执行此操作后,VS.NET解决方案文件也进行了升级,因此您需要在其Beta通道上打开最新的MonoDevelop(3.1.1)。
注意:所有示例项目都是在VS.NET中开发,但是在Servicestack.net(Hetzner Ubuntu vServer)上托管时,在Mono / Linux上部署。我们不关心在MonoDevelop中进行开发,就像在Linux / Mono主机上运行基于ServiceStack的软件一样。理想情况下它应该同时执行这两项操作,但是当我们主要在VS.NET中开发时,我们不会经常对MonoDevelop进行测试。
Sqlite是一个非托管的本机C库,与.NET的其他部分不同,它不能在多个平台上运行相同的二进制文件。
在Windows上使用.NET时,ServiceStack.OrmLite.Sqlite
包引用Mono.Data.Sqlite.dll
,对于Windows / .NET,它将使用sqlite3.dll
文件夹中的非托管bin/
(这就是为什么sqlite .dll需要设置为内容资源,设置为“如果更新则复制”。对于Linux,它会查找 sqlite3.so ,而在OSX上,它会在您的库查找路径中查找 libsqlite3.dylib 。如果在主机操作系统中安装了Sqlite,它将自动找到这些,如果不是,则需要在LD_LIBRARY_PATH
环境变量中包含这些共享库的路径。