xamarin.ios - 更新后 Xamarin IOS 上的 Servicestack 程序集失败

标签 xamarin.ios servicestack xamarin

我刚刚升级到最新的 Xamarin 版本,虽然我的所有库都被引用,但我不断收到这些错误:

错误 CS0012:类型 ServiceStack.ServiceHost.IReturn 1' 在未引用的程序集中定义。考虑添加对程序集`ServiceStack.Interfaces, Version=3.9.55.0, Culture=neutral, PublicKeyToken=null' (CS0012) (Place.Logic) 的引用

错误 CS0012:类型 ServiceStack.ServiceHost.IReturn' is defined in an assembly that is not referenced. Consider adding a reference to assembly ServiceStack.Interfaces, Version=3.9.55.0, Culture=neutral, PublicKeyToken=null' (CS0012) (Place.Logic)

(我认为单点触控 DLL 在发布版本上的版本号不正确)

****更新

来自评论和链接以及这个:Xamarin Studio iOS assembly error

如果不使用特定的命令行工具,似乎需要从源代码重新编译 DLL。

不幸的是,Servicestack monotouch 源文件上的源文件不完整,一直在说:Servicestack.Text.Monotouch (Load failed)。有没有人设法重新编译这些并将它们供公众使用?

***更新

添加源文件的单点版本会导致 Xamarin Studio 提示文件不兼容,即。 Monotouch v1.0,当尝试在同一解决方案文件中选择它们作为引用时。

***解决方法

我的 DTO DLL 引用了 ServiceStack DLL 并引发了版本控制等问题。所以我最终将 DTO 源文件从服务器端逻辑复制到我的 Xamarin 项目中。现在可以工作,虽然我不高兴我有相同代码的重复:(

最佳答案

通常,MonoTouch 项目只能引用其他 MonoTouch 项目或 MonoTouch 程序集版本。 (您可以为适当定位的可移植类库设置异常(exception)。)

因此,即使您的应用程序引用了 ServiceStack MonoTouch 程序集,但您的 DTO 项目引用了非 MonoTouch ServiceStack 程序集,并且您的应用程序引用了该 DTO 项目,它也会按照您的描述失败。

所以,是的,正如您所提到的,将 MonoTouch 项目与具有相同来源的标准项目放在一起是常见的做法。 MonoTouch 项目只是一个引用标准项目中文件的 shell 。 (有多种做法可以使这些项目保持同步,这是一个持续开发的领域。例如,一个技巧是在 .csproj 文件中使用通配符。)

最后,值得注意的是,您在客户端应用程序中引用的 ServiceStack 版本并不严格需要与服务器项目中引用的 ServiceStack 版本匹配。 ServiceStack 解析服务 URL 和序列化/反序列化 DTO 的约定相当稳定。因此,您可以在不升级客户端的情况下升级服务器上的 ServiceStack。

关于xamarin.ios - 更新后 Xamarin IOS 上的 Servicestack 程序集失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17866524/

相关文章:

c# - 具有可绑定(bind)属性的自定义 View 未在 Xamarin.Forms SAP 上正确绑定(bind)

ios - Xamarin Studio 无法识别 iOS 设备,即使 XCode 可以

ios - 将当前应用程序的构建版本输出为字符串 - Xamarin.iOS

ios - Xamarin Native 链接 Paypal 失败

servicestack - 如何获取客户端的IP?

mysql - OrmLite(服务堆栈): Only use temporary db-connections (use 'using' ?)

c# - Xamarin.Forms.Color 到十六进制值

ios - 滚动时 MvxTableViewSource DequeueReusableCell 问题

ios - 以编程方式多行在 iOS 中不起作用

servicestack - ServiceStack OrmLite 中 QueryById() 和 GetById() 的区别