注意事项
- <font color=#488AF3>主工程代码和热更代码重复问题</font>
Zero框架的设计思路是主工程代码可以重用热更代码库的代码。从设计原理上来看,理论上主工程代码是不可以引用热更代码库的。但是当我们涉及到泛型编程、继承实现等需求的代码库编写时,这些代码因为ILRuntime框架的原因(跨域继承、重定向),如果不放在热更代码库中,要写重定向和适配器代码,编写这些对于那些对ILRuntime不熟的开发者来说,成本实在太高。而有时候主工程有些代码,又需要依赖这部分热更中的代码库来简化开发,比如对象池、线程同步器、协程代理等等库的引用。表面上这里两者产生了相互依赖关系,但实际上,我们打包的时候,打包出的DLL和主工程代码是两个在运行时是两个代码域,之间虽然有重复的代码,但是是并不冲突的。这样做打出的dll可能大一点(一般视代码而定,10万行重复代码大概是1MB,个人认为相对于开发效率的提升,这点牺牲是可以接受的),但是开发时代码可以重用,方便了开发。这个是需要开发一个大型的项目,经验积累才明白这样做的好处。
- <font color=#488AF3>扩展方法请写在主工程代码中</font>
扩展方法请写在主工程代码中,写在@Scripts中,打包DLL时会出错。这是因为代码依赖的问题,打包DLL时会检测到重复的方法定义原因参看【主工程代码和热更代码重复问题】。