ILRuntime自我学习和认知(二)——Demo.1分析

这个Demo没什么说的,就是对ILRuntime生成的DLL进行加载。

// 在一个协同方法里
// 首先实例化一个应用程序域
ILRuntime.Runtime.Enviorment.AppDomain appdomain = new ILRuntime.Runtime.Enviorment.AppDomain();

// 加载dll,同理看需求是否需要加载pdb
WWW www = new WWW(Application.streamingAssetsPath + "/HotFix_Project.dll");
while (!www.isDone)
{
    yield return null;
}
if (!string.IsNullOrEmpty(www.error))
{
    UnityEngine.Debug.LogError(www.error);
}
byte[] dll = www.bytes;
www.Dispose();

// 
System.IO.MemoryStream fs = new MemoryStream(dll);

// 加载热更程序集
appdomain.LoadAssembly(fs, p, new ILRuntime.Mono.Cecil.Pdb.PdbReaderProvider());

这些就是主要的加载流程和代码。

需要注意的是:fs和p,得在程序释放的时候销毁(新版本的要求)。

当然,在实际项目中,一般不会完全按照demo的方式写。

本人主要会将DLL和pdb文件都转化成二进制文本,这样就符合unity资源格式,进行统一管理。

热更工程在生成DLL后,对DLL文件进行二进制转化并保存。然后丢掉到项目的更新资源目录。

加载的方式就和其他资源一样,获取 TextAsset 对象,直接获取 bytes。然后再 LoadAssembly。

(以上纯属个人经验)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值