动态加载程序集在一些插件式的应用中很是常见,.net core 2.0中能够经过AssemblyLoadContext中提供程序集的动态加载功能,但取不支持卸载。如今,在.net core 3.0中提供了程序集卸载的支持(Collectible AssemblyLoadContext),更加完善了这方面的功能。web
因为AssemblyLoadContext是一个抽象类,要实现这个动态程序集回收,须要实现本身的AssemblyLoadContext类,而且设置基类构造函数isCollectible为true。api
public class CollectibleAssemblyLoadContext : AssemblyLoadContext { public CollectibleAssemblyLoadContext() : base(isCollectible: true) { } }
经过上面的设置后,咱们就能够经过CollectibleAssemblyLoadContext 对象的Unload函数来实现程序集的卸载了。被卸载的程序集会在下一次GC的时候完全回收。函数
参考文章:spa