3

我正在尝试构建一个控制台应用程序来测试 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

4

3 回答 3

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确保所有引用都使用相同的版本号(正如您所做的那样)并确保没有滞后的版本号引用。

服务堆栈.Redis

同样,当头版本是3.9.48时,我遇到了针对导致Mono上各种s 的包ServiceStack.Logging.NLog编译的问题。3.9.44TypeLoadExceptionServiceStack.*

于 2013-05-30T19:07:02.603 回答
1

因此,在与 MonoDevelop IDE 和 nuget 的激烈战斗之后。我只是求助于在 MonoDevelop 中从源代码构建 Servicestack.redis,并复制输出 DLL。这没有问题。

似乎 monodevelop 不喜欢 nuget 的 Dll,或者 nuget 端口在 DLL 引用方面存在一些错误。无论哪种方式,我都不知道具体细节,但是通过在 MonoDevelop 中从源代码构建 servicestack 组件,有一个解决方案。

于 2013-05-28T15:35:14.790 回答
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。

于 2013-10-11T15:49:22.003 回答