0

我最近开始使用 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)?

谢谢

汤姆

4

1 回答 1

0

当您作为通用应用程序执行此操作时,您将自己限制在桌面应用程序也可以使用的 API 中,虽然部分System.Reflection.Emit命名空间存在,但它不包括错误消息所引用的那些类

于 2015-06-03T11:41:57.377 回答