更新后Xamarin IOS上的Servicestack程序集失败



我刚刚升级到最新的Xamarin版本,尽管我的所有库都被引用了,但我一直收到这些错误:

错误CS0012:类型ServiceStack.ServiceHost.IReturn 1"是在未引用的程序集中定义的。考虑添加对程序集"ServiceStack.Interface,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,版本=3.9.55.0,区域性=中性,PublicKeyToken=null'(CS0012)(Place.Logic)

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

****更新

来自评论和链接和这个:Xamarin Studio iOS组装错误

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

不幸的是,Servicestack单点触控源文件上的源文件不完整,并且一直在说:Servicestack.Text.monotouch(加载失败)。有没有人设法重新编译这些文件并将其公开使用?

***更新

添加源文件的monotouch版本会导致Xamarin Studio在尝试选择文件作为同一解决方案文件中的参考时抱怨文件不兼容,即monotouch v1.0。

***解决方法

我的DTO DLL引用了ServiceStack DLL,并引发了版本控制等问题。因此,我最终从服务器端逻辑将DTO源文件复制到了我的Xamarin项目中。目前有效,尽管我不高兴我有相同代码的重复:(

一般情况下,MonoTouch项目只能引用其他MonoTouch工程或组件的MonoTouch构建。(您可以对目标适当的可移植类库进行例外处理。)

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

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

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

相关内容

最新更新