I would like my application to be able to load modules dynamically and release them once they aren't needed. For example in c++ I would load a dll containing the required function, run it, then release the dll after it's no longer needed. What are my options in c#? From what I have read so far I can load assemblies containing the required code to execute but I can't release it without releasing the main application domain that loaded it. Is my only option to create another application domain where I can then load the executable and then release it by releasing that domain? It seems that this creates a lot of overhead to simply be able to unload those assemblies once they aren't needed. Any help or suggestions welcomed.