動態加載程序集在一些插件式的應用中很是常見,.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