2013-07-25 52 views
4

后未能在Xamarin IOS我刚刚升级到最新Xamarin建立的,尽管所有我的库引用我不断收到这些错误:Servicestack组件更新

错误CS0012:类型ServiceStack.ServiceHost.IReturn 1' 是在定义未引用的程序集。考虑添加一个参考汇编'ServiceStack.Interfaces,版本= 3.9.55.0,文化=中立,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,文化=中立,公钥=空”(CS0012)(Place.Logic)

(MonoTouch的DLL文件有不正确的版本号的发布版本,我认为)

**** UPDATE

从的评论和链接和这一个:Xamarin Studio iOS assembly error

它似乎需要从源重新编译dll,如果不使用特定命令行toold。

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

*** UPDATE

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

***替代方法

我的DTO DLL被引用ServiceStack DLL和提高与版本控制等问题,所以我已经结束了DTO的源文件复制到从服务器端逻辑我Xamarin项目。虽然我不开心,但我有相同的代码重复:(

+0

我收到了其他编译​​错误,但它们也与新版本的Xamarin Studio有关。这里有一个封闭的项目在谈论相同的行为。 https://bugzilla.xamarin.com/show_bug.cgi?id=13464 – danmiser

回答

1

一般来说,MonoTouch项目可能只引用其他MonoTouch项目或MonoTouch生成的程序集(您可以为适当定位的可移植类库。)

因此,即使您的应用程序引用ServiceStack MonoTouch的组件,但你的DTO项目引用非MonoTouch的ServiceStack组件,并且您的应用程序引用了DTO项目,它将为你描述失败。

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

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