繁体   English   中英

在没有完整 AOT 的 Xamarin.iOS 中使用 Protobuf-Net

[英]Using Protobuf-Net In Xamarin.iOS without full AOT

除了这种方法之外,是否有任何替代方法可以使用 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?

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

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

  • 为要序列化的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(...)来工作new MySerializer().Serialize(...)
  • 当你编译你的解决方案时,项目应该很好地AOT

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

我使用 netstandard1.0 dll 让 protobuf-net 2 在 Xamarin-iOS 上工作。 您可以通过提取 nuget package 来获得此 dll。 无需更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM