以下为ET8.1下升级流程
一、打开win下的命令行界面
1、执行命令:dotnet new classlib –framework “netstandard2.1” -o MongoDBUnity
注意–frameworks前是两个“-”,另外可选netstandard2.0或netstandard2.1,具体看本机安装版本
2、cd MongoDBUnity
3、dotnet add package MongoDB.Driver
4、发布Release版本:dotnet publish -c Release
二、将生成Dll复制到项目
1、先删除Unity的Plugins/MongoDB目录下的所有dll
2、将路径\MongoDBUnity\bin\Release\netstandard2.1\publish内的所有Dll文件复制到Unity的Plugins/MongoDB文件夹下
三、修改Unity/Assets/Scripts/Model/Share/MongoRegister.cs,将ET命名空间的类添加到信任列表才能序列化
1、引入using MongoDB.Bson.Serialization.Serializers;
2、在public static void Init()方法中的 registerIdGenerators.Invoke(null, Array.Empty<object>());行后添加以下语句
var objectSerializer = new ObjectSerializer(type => ObjectSerializer.DefaultAllowedTypes(type) ||
type.FullName.StartsWith("ET"));
BsonSerializer.RegisterSerializer(objectSerializer);
四、修改Unity/Assets/Scripts/Core/Serialize/MongoHelper.cs,改变框架原本Stream的直接转换语句
1、public static object Deserialize(Type type, byte[] bytes, int index, int count)中
try
{
using MemoryStream memoryStream = new(bytes, index, count);
using BsonBinaryReader reader = new(memoryStream);
return BsonSerializer.Deserialize(reader, type);
}
2、public static object Deserialize(Type type, Stream stream)中
try
{
using BsonBinaryReader reader = new(stream);
return BsonSerializer.Deserialize(reader, type);
}
3、public static T Deserialize<T>(byte[] bytes)中
try
{
using MemoryStream memoryStream = new(bytes);
using BsonBinaryReader reader = new(memoryStream);
return BsonSerializer.Deserialize<T>(reader);
}
五、项目Nuget的升级
在vs2022或rider中,通过NuGet包管理,将MongoDb.Driver从2.17.1升级到3.4.3
大家有兴趣的升级尝试下,顺便看看行不行,有什么Bug不