新的C#/ Mono,ServiceStack.Redis找不到参考

时间:2013-05-28 05:50:18

标签: mono servicestack

我正在尝试构建一个控制台应用来测试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指令或程序集引用?”

下面的屏幕截图显示了缺少的引用,即使它显然在参考文件夹中:(。非常令人费解。

有没有人有类似的问题?任何帮助将不胜感激。

ScreenCap of Assemblies and References

3 个答案:

答案 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.Redis

同样地,我遇到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。