you can also defer loading to another thread, what i do is load the initial app and display the main window, then i do the part discovery on another thread, and when that's done i do the actual composition (.Compose()) on the main thread.

You could also do your own version of Directory catalog, all it really does internally is load each assembly and create an Assembly catalog from that.

in my app o solved it by having a special folder for plugins and also doing the assembly loading on a background thread