我正在试验ServiceStack的JSON引擎。我抓住了MonoTouch二进制版本v2.20。从模拟器工作正常,但是从iOS设备(iPad2,iOS5)我得到了JsonWriter的类型初始化程序抛出的异常(除此之外没什么)。我正在使用MonoTouch 5,MonoDevelop 2.8.1,并以iOS 5为目标。我已禁用库链接,因为启用时出现错误。
我创建了一个示例并上传到https://github.com/t9mike/ServiceStack-JSON1。
我正在尝试确定问题是我的编译选项,服务堆栈还是MonoTouch。提前谢谢。
答案 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更新了我的示例。