.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 组件实现 新建一个组件,完成这些接口方法的实现。
阅读全文