.NET Core 加载程序集AssemblyLoadContext

.NET Core插件热加载-AssemblyLoadContext

AssemblyLoadContext

官方文档:AssemblyLoadContext

AssemblyLoadContext主要提供程序热加载隔离,通过AssemblyLoadContext可以实现在单个进程中加载同一程序集的多个版本。
这篇文章主要讲一下在使用AssemblyLoadContext类的过程中对Load方法,及Resolving事件的理解。

Load

AssemblyLoadContext提供了以多种方式加载热插拔程序集的方式:

  • 按照AssemblyName加载程序集

    Load,LoadFromAssemblyName是根据AssemblyName解析和加载程序集。

  • 按照AssemblyPath加载程序集
    如果可以确定文件的完全限定路径,可以用LoadFromAssemblyPath来加载程序集。

  • 解析程序集的Stream加载程序集
    如果无法获取程序集的完全限定路径,可以先根据指定的路径读取到程序集的流,然后以LoadFromStream解析已经读取到的流的方式将程序集加载到指定的AssemblyLoadContext上。

Resolving

在使用Load方法加载程序集的时候可能会遇到正在加载的程序集的依赖程序集还未被加载的情况,这时使用Load加载程序集的时候就会提示指定文件不存在。这时候就会触发到Resolving 事件,可以在这个事件中加载程序集的上下文。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值