【问题标题】:Servicestack assembly failing on Xamarin IOS after update更新后 Xamarin IOS 上的 Servicestack 程序集失败
【发布时间】:2013-07-25 18:59:10
【问题描述】:

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

错误 CS0012:类型 ServiceStack.ServiceHost.IReturn1' 在未引用的程序集中定义。考虑添加对程序集 `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 assemblyServiceStack.Interfaces,Version=3.9.55.0,Culture=neutral,PublicKeyToken=null' (CS0012) (Place.Logic)

(我认为,monotouch DLL 在发布版本上的版本号不正确)

****更新

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

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

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

***更新

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

***解决方法

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

【问题讨论】:

标签: xamarin.ios servicestack xamarin


【解决方案1】:

一般来说,MonoTouch 项目只能引用其他 MonoTouch 项目或 MonoTouch 构建的程序集。 (您可以对目标适当的可移植类库进行例外处理。)

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2020-04-15
    • 2016-07-26
    • 1970-01-01
    • 2018-04-19
    相关资源
    最近更新 更多