我正在尝试构建一个控制台应用来测试redis / mono通信。我使用Monodevelop 4.0(Xamarin Studios)+ Nuget Port在Mac OS上使用ServiceStack.Redis打砖墙。
我在网上找到的所有解决方案都只说,在视觉工作室中将“.Net 4.0 Client Profile”更改为“.Net 4.0 full”。我还没有在MonoDevelop上找到相关的功能,甚至不确定是否存在这样的选项。那里没有帮助。
我得到的错误是:
“找不到类型或命名空间名称`RedisClient'。您是否缺少using指令或程序集引用?”
下面的屏幕截图显示了缺少的引用,即使它显然在参考文件夹中:(。非常令人费解。
有没有人有类似的问题?任何帮助将不胜感激。
答案 0 :(得分:2)
我认为这通常是 Mono 上版本数量滞后的问题。
例如,这是一个可以重现问题的例子:
ServiceStack.Redis
是针对ServiceStack.Interfaces -> 3.9.45
编译的。但你实际上已经推出了最新的 3.9.48 版本:
ServiceStack.Interfaces
3.9.48
ServiceStack.Common
3.9.48
ServiceStack.Text
3.9.48
Mono 会将旧的 ServiceStack 引用 3.9.45 转发到 3.9.48 。
因此,从源代码重新编译将解决此问题。
或者,通过打开所有 ServiceStack。*。dll ,确保 所有 您的引用使用相同的版本号(就像您一样)完成)并确保没有滞后的版本号引用。
同样地,我遇到ServiceStack.Logging.NLog
针对3.9.44
个软件包编译的问题,当{{1}的头版本导致 Mono 上的各种TypeLoadException
时是 3.9.48 。
答案 1 :(得分:1)
因此在与MonoDevelop IDE和nuget战斗后头发撕裂。我只是从MonoDevelop中的源代码构建Servicestack.redis,并复制输出DLL。这没有问题。
似乎monodevelop不喜欢nuget的Dlls,或者nuget端口有一些带有DLl引用的bug。无论哪种方式,我都不知道具体细节,但通过在MonoDevelop中从源代码构建servicestack组件,可以解决这个问题。
答案 2 :(得分:1)
我遇到了与Xamarin Studio 4.0.12 + NuGet Port对抗Mono 2.10.9同样的问题。
昨天我决定尝试让OrmLite工作&当我去添加软件包时,我看到有ServiceStack更新可用(从3.9.63.0版到3.9.66.0版)。安装了更新并添加了OrmLite包,我开始收到相同的错误......
“类型或命名空间名称'OrmLiteConnectionFactory”不可能 找到。您是否缺少using指令或程序集引用?“
奇怪的部分是Intellisense正在工作(我可以在IDE中完全限定OrmLiteConnectionFactory,它会发现它很好)但它不会构建。就像你一样,我也在Assembly Browser中看到我的ServiceStack DLL引用了一些其他ServiceStack项目的先前版本。
升级到最新的Mono版本(3.2.3 atm)解决了这个问题。哈利路亚!不知道为什么我开始使用Mono 2.10.9。