2013-05-28 33 views
3

我正在尝试构建控制台应用程序以测试Redis/mono通信。我一直在使用Monodevelop 4.0(Xamarin Studios)+ Nuget Port在Mac OS上使用ServiceStack.Redis来打砖墙。C#/单声道新手,ServiceStack.Redis无法找到参考

我在网上找到的所有解决方案都只是说,在视觉工作室中将“.Net 4.0 Client Profile”改为“.Net 4.0 full”。我还没有在MonoDevelop上找到相关的函数,甚至不知道是否存在这样的选项。所以没有帮助。

我得到的错误是:

“?类型或命名空间名称'RedisClient”找不到是否缺少using指令或程序集引用”

下撷取画面显示丢失的引用,即使它显然是在参考文件夹:(。这是非常令人费解。

有没有人遇到过类似问题?任何帮助,将不胜感激。

ScreenCap of Assemblies and References

+0

您是否将这些参考文献与Nuge T' –

+0

是的,我有,我在monodevelop中使用了一个Nuget Port。 https://github.com/mrward/monodevelop-nuget-addin –

回答

2

我认为这通常是Mono上滞后版本号的问题。

例如,这里是一个可以重现该问题的一个例子:

  • ServiceStack.Redis是针对ServiceStack.Interfaces -> 3.9.45编译。
  • 但实际上,已经拉到了最新48年3月9日版本:

    ServiceStack.Interfaces48年3月9日

    ServiceStack.Common48年3月9日

    ​​48年3月9日

将有问题转发老人ServiceStack引用45年9月3日至48年3月9日

因此,从源代码重新编译将解决问题。

或者,确保所有您参考使用的是相同的版本号,打开了所有ServiceStack。*。dll的(如你所做的),并确保没有滞后的版本号引用。

ServiceStack.Redis

同样,我曾与ServiceStack.Logging.NLog问题对3.9.44包导致各种TypeLoadException S于ServiceStack.*头版本48年3月9日编译。

+0

除了从源代码编译。有没有可以在Mono中转发程序集引用的app.config设置?我尝试过使用标记而没有任何效果。 此外,我选择您的重播作为答案,因为它更详细。 –

+1

感谢您的回答。不,我还没有找到一个优雅的解决方案。我也尝试'app.config'中的assemblyBinding重定向,它也没有工作。我创建了一个[拉取日志请求](https://github.com/ServiceStack/ServiceStack.Logging/pull/18),这将解决我的问题'日志记录'。然而,你的'Redis'问题可以通过在NuGet上取得最新的内容来解决。最新的'Redis'是针对正确的** 3.9.48 **头编制的。 –

+0

很感谢您的更新! –

1

所以后发撕裂与MonoDevelop的IDE和战斗的NuGet我只是使出从源代码中的MonoDevelop建设Servicestack.redis,并复制了输出的DLL。这个工作没有问题。

似乎或者monodevelop不喜欢nuget的dll,或者nuget port有一些DLl引用的bug。无论哪种方式,我不知道具体情况,但是通过在MonoDevelop中从源代码构建服务堆栈组件,可以找到解决方案。

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指令或程序集引用?”

怪异的一部分是智能感知是工作(我可以完全限定OrmLiteConnectionFactory在IDE中,它会精细找到它),但它不会建立。就像你,我也看到了,我的ServiceStack的DLL引用的其他一些ServiceStack项目的早期版本浏览器的组装。

升级到最新版本单(3.2.3 ATM)解决这个问题对我来说。哈利路亚!不确定为什么我开始使用单声道2.10.9

相关问题