A plugin architecture remains a valuable option to make your application extensible. With the introduction of AssemblyLoadContext and AssemblyDependencyResolver in
.NET Core 3, creating and loading plugins became a lot easier.
Still if you need more features I would recommend having a look at the DotNetCorePlugins project: https://github.com/natemcmaster/DotNetCorePlugins
Usage is simple through the PluginLoader class:
One nice feature it adds to the mix is hot reloading. This will allow you to dynamically update assemblies on the fly: