版本迭代
不兼容性
请注意,这些 Nino 版本与其之前的版本不兼容,生成的代码可能需要相应地进行更新。
v3.0.0
我们废弃了 v2 的实现,并重写了整个项目,因此生成的代码将与 v2 版本不同。
v3.0.3
我们修复了多态非托管结构体的问题,因此生成的代码将与 v3.0.0 版本不同。
v3.2.0
我们新增了修改类型数据结构,同时仍能反序列化由旧数据结构序列化的旧数据(包括修改集合类型中的多态类型的元素的数据结构)的功能,因此生成的代码将与 v3.0.3 版本不同。
v3.3.4
我们添加了对非托管字段的对齐,这使得在反序列化数据时可以更快地访问内存。它还内联了将非托管字段复制到内存中的调用,这使得序列化更快。然而,这增加了二进制大小,并且与以前的版本不兼容。
从 Nino v2 迁移
如果您正在从 Nino v2 进行迁移,您只需更新到最新版本的 Nino,然后将生成代码的命名空间从 AssemblyName_Nino
更改为 AssemblyName.NinoGen
。
如果我想用新版本反序列化旧数据怎么办?
如果您想用新版本反序列化旧数据,请按照以下步骤操作:
- 复制旧生成的代码(主要是旧的Deserializer以及其引用到的代码)到新项目中,并修改命名空间以避免混淆。
- 升级到所需的 Nino 版本,这样就会生成新的序列化器和反序列化器。
- 使用旧反序列化器来反序列化旧数据,然后使用新序列化器重新序列化数据。如果这涉及到游戏的存档,您可以通过为存档数据添加头部标识来区分旧数据和新数据(即使用较新的 Nino 保存数据,并在保存存档之前为数据添加头部标识,这样下次读取时,根据头部标识信息表明程序应该使用使用较新的反序列化器来反序列化数据),否则退回使用旧的拷贝出来的的反序列化器进行反序列化。