1

除了此方法之外,是否有任何替代方法可以使用 protobuf-net 在 Xamarin.iOS(Monotouch)中实现对象的序列化和反序列化:

http://www.frictionpointstudios.com/blog/2011/3/31/using-protobuf-net-serialization-in-unity-iphone.html

阅读周围的一些人声称他们已经做到了(没有提供证据),但我的理解是 [iOS JIT==NO] 所以不太有意义。

如果唯一可能的解决方案是完全 AOT 所有相关类,那么合适的构建前/构建后事件命令行可能会自动为任何相关程序集执行此 AOT?

4

1 回答 1

4

我听说很多人通过这条路线取得了成功,但我也无法提供书面证据。

这种方法有点过时了——我已经简化了几个步骤;有一个独立的预编译工具应该可以工作:

  • 为要序列化的 DTO 创建一个项目/程序集,该项目/程序集引用适当版本的 protobuf-net;大概是CoreOnly / ios,理想情况下将该dll设置为复制到输出目录中(它只是让生活更轻松)
  • precompile "SomePath/YourDto.dll" -t:MySerializer -o:MySerializer.dll
    

    (也许在此mono之前有一个单声道来托管 exe)

    这应该解决框架并编译一个MySerializer.dll您可以引用的,这涉及零 JIT(MySerializer.dll将引用您的 dto dll 和您的 dto dll 引用的 protobuf-net 的版本)

  • 现在引用您的 dto dll、序列化程序 dll 和 protobuf-net dll,它应该都可以通过使用new MySerializer().Serialize(...)
  • 当你编译你的解决方案时,这些项目都应该很好地 AOT

我很乐意提供指导,但目前我没有 mac,所以我现在无法检查。如果您遇到任何问题,请告诉我。如果它不能解析框架,你可以添加-f:{path to the framework assemblies}给它一个线索。

于 2013-04-12T11:59:21.530 回答