.net core 2.0支持程序集动态加载,.net core 3.0支持程序集动态卸载
程序集动态加载卸载使用AssemblyLoadContext
每个程序都具有一个默认的AssemblyLoadContext,AssemblyLoadContext包含以加载的程序集集合,当AssemblyLoadContext被卸载时,对应的程序集也会在下一次GC回收时被回收
要创建新的AssemblyLoadContext需要实现AssemblyLoadContext
public class ActuatorAssemblyLoadContext : AssemblyLoadContext
{
public ActuatorAssemblyLoadContext() : base(isCollectible: true)
{
}
}
使用new创建一个AssemblyLoadContext
var assemblyLoadContext = new ActuatorAssemblyLoadContext();
使用Load系列方法加载程序集,方法返回程序集
var actuatorsAssembly =assemblyLoadContext.LoadFromStream(ms);
使用Unload方法卸载AssemblyLoadContext
assemblyLoadContext.Unload();