我最近开始使用 protobuf-net 库来解决 Windows Phone 8.1 上的 .Net Core 中缺少二进制序列化的问题,以用于现有游戏的端口。
到目前为止,protobuf-net 对我来说效果很好。但是,当我提交应用程序时,它未通过认证测试。该报告将属于 protobuf-net dll 的各种方法和类列为不受支持的 API。
此报告中的一个示例是:
此应用程序类型不支持此 API - Api=System.Reflection.Emit.Label。模块=MSCORLIB,PUBLICKEYTOKEN=7CEC85D7BEA7798E。文件=protobuf-net.dll。此应用程序类型不支持此 API - Api=System.Reflection.Emit.DynamicMethod。模块=MSCORLIB,PUBLICKEYTOKEN=7CEC85D7BEA7798E。文件=protobuf-net.dll。此应用程序类型不支持此 API - Api=System.Reflection.Emit.ILGenerator。模块=MSCORLIB,PUBLICKEYTOKEN=7CEC85D7BEA7798E。文件=protobuf-net.dll。此应用程序类型不支持此 API - Api=System.Reflection.Emit.LocalBuilder。模块=MSCORLIB,PUBLICKEYTOKEN=7CEC85D7BEA7798E。文件=protobuf-net.dll。此应用程序类型不支持此 API - Api=System.Reflection.MemberTypes。模块=MSCORLIB,PUBLICKEYTOKEN=7CEC85D7BEA7798E。文件=protobuf-net.dll。
还有更多,但为简洁起见,我将它们排除在外。然而,据我所知,MSDN 文档指出Windows Phone 8.1 支持这些API。当然,在我自己的测试中,当从 Visual Studio 部署时,该库已经在设备上正常工作了几周。
有没有人知道我在这里可能遗漏的任何步骤,需要在包清单中设置的一些标志或类似的东西?或者我是否使用了不正确的 protobuf-net 版本(我从 WindowsPhone8.0 项目构建了 dll)?
谢谢
汤姆