.NET的AssemblyLoadContext如何实现可插拔程序集的动态加载?
摘要:一:背景 1. 讲故事 最近在分析一个崩溃dump时,发现祸首和AssemblyLoadContext有关,说实话这东西我也比较陌生,后来查了下大模型,它主要奔着替代 .NetFrameWork 时代的 AppDomain 的,都是用来做晚
一:背景
1. 讲故事
最近在分析一个崩溃dump时,发现祸首和AssemblyLoadContext有关,说实话这东西我也比较陌生,后来查了下大模型,它主要奔着替代 .NetFrameWork 时代的 AppDomain 的,都是用来做晚期加卸载,实现对宿主程序的可插拔,AppDomain.Create 是在AppDomain级别上,后者是在 Assembly 级别上。
二:Assembly 插拔分析
1. 一个简单的案例
简单来说这东西可以实现 Assembly 的可插拔,这个小案例有三个基本元素。
IPlugin 组件接口
这块比较简单,新建一个类库,里面主要就是组件需要实现的接口。
namespace MyClassLibrary.Interfaces
{
public interface IPlugin
{
string Name { get; }
string Version { get; }
void Execute();
string GetResult();
}
}
SamplePlugin 组件实现
新建一个组件,完成这些接口方法的实现。
