在MonoTouch上使用ServiceStack JSON进行序列化时出错

时间:2011-10-30 01:28:50

标签: xamarin.ios servicestack

我正在试验ServiceStack的JSON引擎。我抓住了MonoTouch二进制版本v2.20。从模拟器工作正常,但是从iOS设备(iPad2,iOS5)我得到了JsonWriter的类型初始化程序抛出的异常(除此之外没什么)。我正在使用MonoTouch 5,MonoDevelop 2.8.1,并以iOS 5为目标。我已禁用库链接,因为启用时出现错误。

我创建了一个示例并上传到https://github.com/t9mike/ServiceStack-JSON1

我正在尝试确定问题是我的编译选项,服务堆栈还是MonoTouch。提前谢谢。

2 个答案:

答案 0 :(得分:1)

快速部分答案可能有所帮助:

  

我已禁用库链接,因为启用时出现错误。

当前(5.0)托管链接器可以从应用程序中删除一些未使用的(从静态分析的角度来看)代码。这通常在使用全部链接选项时发生,即链接器处理用户代码的位置。

另一种方法是使用仅限链接SDK程序集,它们不会触及用户代码(只有链接器会处理MonoTouch本身附带的代码)。

另一种方法是在代码上添加[Preserve]属性,以确保在链接器处理完代码后仍然满足序列化程序要求。可以找到有关链接器和[保留]属性的更多信息here

MonoTouch的 next (5.2)版本将在链接器中包含一些更复杂的步骤,以确保不破坏基本的XML序列化和DataContract要求。不确定这是否会解决这个特定情况(ServiceStack JSON),但我会仔细研究一下。

至于你提出的其他问题,我会尝试自己构建并复制你的问题。

答案 1 :(得分:0)

我最终从GitHub 3.0.3版抓取了ServiceStack.Text sources。我创建了一个新的MonoTouch库项目。我不得不稍微调整ServiceStack.Text / JsConfig.cs来条件化System.Drawing.Color位。我将向作者发送补丁和MT csproj。

使用这个新程序集后,我的示例MT应用程序在设备上运行正常。我已使用新的ServiceStack.Text dll在https://github.com/t9mike/ServiceStack-JSON1更新了我的示例。