更新记录
V2.1.0
Breaking Change
- 由于调试协议变更,2.1.0以上的版本调试插件不和以前版本相兼容,需要从VS和VSCode插件商店安装新版本调试插件
新功能
- 调试器支持多工程同时调试
- 调试器新增自动发现可调式实例的功能,在同一局域网网络时可自动发现所有可调式实例
- 新增VSCode调试插件, 同时支持Windows和Mac
- 新增VS2022调试器支持
Bug修正
- 修复一个实例化时不能找到正确的构造函数的Bug
- Prewarm接口可预热async方法
- 修复一些情况下使用泛型约束会报错的问题
- 修复寄存器模式有时在for循环中使用值类型行为不符合预期的问题
- 修复一些用发下GetCustomAttribute不能获取指定Attribute的问题
- 修复Stfld与Ldfld当对象为适配器时的异常
- 修复热更中无法使用Delegate.CreateDelegate的问题
- 修复CLR绑定漏分析async方法和event加减的问题
- 修复纯热更内event依然需要适配器的问题
- 修复寄存器模式下构造函数参数比较多时报错的问题
- 优化异常日志输出,避免热更内栈信息被丢弃
- 修复一些用法下interface强转结果不符合预期的问题
- 修复MethodInfo.CreateDelegate报错的问题
- 修复寄存器模式有些情况下foreach内部运行异常的问题
- 修复寄存器模式有时候被内联的方法中值类型被破坏的问题
- 修复寄存器模式下有时值类型复制出错的问题
- 修复寄存器模式使用JITImmediately时产生预期外的GC Alloc的问题
- 修复寄存器模式偶现栈损坏的问题
- 修复寄存器模式调用多态方法时偶现报错的问题
- 修复寄存器模式下一些情况ref设置变量值不生效的问题
- 修复寄存器模式下一个委托里使用值类型报错的问题
- 修复一个隐式强转值类型时报错的问题
- 修复泛型方法内断点无法命中的问题
- 修复在调试async方法时卡死的问题
- 修复泛型类型中添加委托出错的问题
- 修复Type.GetField接口同个字段返回多次的问题
- 修复Delegate.Target无法使用的问题
- 修复多层嵌套值类型出现异常的问题
- 修复嵌套using时无法正确调用Dispose的问题
- 修复一个导致弃用Appdomain内存无法正确释放的问题
- 修正一个值类型在无值类型绑定时字段赋值不正确的问题
- 修正一个访问主工程类型字段偶现读错字段的问题
- 修复反射时指定DeclaredOnly依然会返回父类字段的问题
- 修复一些用法下Property.SetValue报错的问题
- 修复通过反射创建泛型方法报错的问题
- 修复泛型方法内对变量赋null后运行报错的问题
- 修复一个由于哈希碰撞导致的字段读取串行的问题
- 修复FieldInfo.GetRawConstantValue报错的问题
V2.0.2
- 修复意外引入的GC Alloc
- 增加CLR自动生成参数,以应对泛型嵌套过深导致没有正确被自动分析捕捉
- 修复一个类字段数量超过64个后一些情况下报错的Bug
- 修复将扩展方法用于委托时的一个报错
V2.0.0
- 加入寄存器运行模式,可大幅提升热更内数值计算性能
- 执行性能整体提升,传统非寄存器模式执行效率也得到一定幅度提升
- 修正热更内finnaly块在一些情况下不正确的bug,连带修复了yield return和async/await的一些异常情况
- 修正值对类型绑定后的数组进行操作时的异常
- 修正热更内Enum一些情况下Equals结果错误的bug
- 修正跨域继承接口时的一些异常情况
- 修正跨域继承时子类无法调用到子类方法的问题
- 修正值类型绑定在一些情况下构造函数执行失败的bug
- 修正反射接口无法获取父类public方法的bug
- 修正嵌套数组在一些情况CLR绑定失败的bug
- 修复值类型绑定后的值类型作为委托参数在一些情况下出现异常的Bug
- 修正byte[]一些情况下取值出现强转失败的bug
- 修正子类型在一些情况下调用+=,-=等重载操作符时异常的bug
- 修正重载!操作符CLR绑定报错的bug
- 修正值类型实现接口后new T时报错的bug
- 修正一些情况下泛型匹配失败的Bug
- 修正在try catch时重新抛出异常出错的Bug
- 修正将委托保存在数组中可能出现调用异常的Bug
V1.6.7
- Appdomain.Prewarm接口加入递归预热的选项
- 优化ILRuntime遇到异常时输出的日志,可在Unity的Console中直接点击前往源码
- 增加CLRBinding在处理遇到同名类型时的容错
- 修正跨域继承适配器自动生成工具生成的代码部分情况无法正常编译的问题
- 完善Debug模式下部分异常的错误日志输出,方便定位问题
- 修正个别情况下,为值类型方法this赋值时导致栈损坏的问题
- 修正一个泛型方法匹配的Bug
- 修正将ILRuntime中的多播委托实例存入List等容器时,只有最后一个挂接的回调被执行的Bug
- 修正一个ref/out操作枚举变量时的Bug
- 修正在泛型方法中转换Action等泛型委托失败的Bug
- 增加CLRBindingUtils,使得应用可以同时兼容有CLR绑定和无CLR绑定的情况(直接删除CLR绑定自动生成代码也不会造成编译错误)
- 给Litjson加入JsonIgnore特性
- 修正FieldInfo,PropertyInfo等反射类型调用GetCustomAttributes时出错的问题
- 修正ILRuntime中获取Attributes无法获取部分参数值的Bug
- 修正一个导致async await中断的Bug
- 修正一个跨域继承访问基类protected变量出错的Bug
- 升级Mono.Cecil到0.11.3
V1.6.6
- Appdomain.Prewarm接口加入预热指定方法的参数
- AppDomain新增GetCurrentStackTrace接口获取当前调用栈,仅支持从热更中调用
- 修改Profiler宏,以简化Unity平台上报Profiler数据
- 修复一个基类包含值类型字段的类型报错的Bug
- 修复热更中调用自定义Attribute后,自动分析绑定生成的代码编译不过的问题
- 修复几个CLR自动分析绑定生成的代码出错的问题
- 修复几个泛型方法匹配的Bug
- 修复在基类实现接口的虚方法上有不必要开销的问题
- 修复GetCustomAttributes接口当inherit为true时不包含基类Attribute的Bug
- 修复CLR自动分析绑定无法自动生成event调用的绑定代码的问题
- 修复在热更内调用Enum.CompareTo和Enum.ToObject的问题
V1.6.5
- 提升了Release环境下(非Development Build)大约25%的执行效率
- 修复了一个泛型类型中泛型变量无法置null的Bug
- 修复一个default关键字作用于枚举或者值类型时报错的Bug
- 修复一个导致带条件的await语句失效的Bug
- 修复一个Enum.ToObject返回的Enum值不正确的Bug
- 修复一个泛型方法中out到一个值类型报错的Bug
- 修复一个由自动生成产生的跨域继承适配器,虚方法未被重载时不执行的Bug
- 修复Litjson集成反序列化枚举数组时崩溃的Bug
V1.6.4
- 修正一个使用委托返回经过值类型绑定过的值类型时造成的栈损坏问题
- 修正一个自动生成跨域继承适配器代码时,无参数虚函数适配代码执行的报错
- 修正一个自动生成跨域继承适配器代码对接口方法生成后,某些情况下导致StackOverflow无限递归的Bug
- 修正Type.ToString结果和原生不一致的问题
- 修正泛型嵌套数组T[][]字段初始化时的报错问题
- 修正一个泛型方法匹配的Bug
- 修正一个泛型数组作为参数时方法匹配的错误
- 删掉一个C#7语法使用以提高兼容性
V1.6.3
- 修复对泛型字段赋值导致栈损坏的Bug
- 修复由跨域继承适配器代码生成器自动生成的代码,导致运行时进入错误的类方法的Bug
- 修复一个在静态方法中实例化对象导致运行出错的Bug
- 修复一个某些情况下静态构造函数没有执行的Bug
- 修复一个加载多DLL,引用字段导致的运行时报错
- 修复值类型绑定Enum字段分配内存时被意外装箱的Bug
- 修复一个CLR自动分析绑定在某个特定情况下遗漏分析的Bug
- 移除所有编译警告
- 修复一个由于Unity的Bug导致的导入ILRuntime包时的报错
V1.6.2
- 修正值类型部分情况下++, +=之类操作符失效的Bug
- 修正将值类型成员变量传入方法,并在该方法里对这个参数赋值报错的Bug
- 修复一个Async Await卡主的bug
V1.6.1
- 去掉部分C#7的用法以增加unity2019以前版本的兼容性
V1.6
- 增加了跨域继承适配器的工具类,简化适配器编写
- 增加了跨域继承适配器的自动生成模版,做到半自动生成
- 优化了热更存取主工程类字段的性能
- 优化了热更内方法调用的性能
- 累积Bug修复
V1.5
- 更新了Mono.Cecil的版本,以支持Unity2018以上使用的.net standard2格式的DLL,以及Mac版VS编译的dll
- 累积Bug修复
V1.4
- 完整实现了断点调试和VS调试插件
- 自动CLR绑定增加了值类型Binder的使用
- 增加了泛型方法的CLR绑定
- 多维数组的支持
- 修复了若干关于泛型方法匹配的Bug
V1.3
- 增加栈上分配值类型的机制,值类型可以不再强制装箱而直接在栈上分配。
- 增加值类型绑定(ValueTypeBinding)机制,可以将ILRuntime外部的CLR值类型在栈上分配,大幅提升相关操作性能
- 修复若干泛型方法寻找方法的bug
- 改善委托缺少适配器或者转换器时自动生成的代码提示
V1.2
- 完善系统反射接口的支持,并且提供获取ILRuntime中定义的类型作为泛型参数的接口
- 集成Litjson库
- 增加了字段,值类型复制,创建默认实例等操作的CLR绑定,改善这些操作的性能
- 加入一种新的CLR绑定代码生成方式,可根据指定的DLL自动生成所需的CLR绑定代码,
无需再手动指定需要生成的类型 - 修复若干泛型方法的Bug
- 修复若干类型判断的Bug
V1.11
- 修复了几个bug
- 现在在Dictionary或者List等容器中存ILRuntime里定义的委托类型不在算跨域调用了
V1.1
- 修复了个别IL2CPP下的bug
- 减少了一些内存占用
- 修复了几个跟泛型方法相关的bug
- 增加了属性以及构造函数的反射支持
V1.0
- ILRuntime的第一个正式版本
- 这次加上了完整的Unity示例工程
- VS调试插件暂时还没更新,如需要请用0.85版里的那个