2

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

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

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

4

2 回答 2

1

一个可能有帮助的快速部分答案:

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

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

一种替代方法是仅使用不会接触用户代码的 Link SDK 程序集(只有 MonoTouch 本身附带的代码将由链接器处理)。

另一种选择是[Preserve]在您的代码上添加属性,以确保在链接器处理您的代码后仍然满足序列化程序的要求。有关链接器和 [Preserve] 属性的更多信息,请参见此处

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

至于您的其余问题,我将尝试自己构建并复制您的问题。

于 2011-10-30T23:43:55.533 回答
0

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

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

于 2011-11-07T02:44:58.890 回答