System.Reflection.Assembly.LoadFile Locks File

I’m loading a DLL via System.Reflection.Assembly.LoadFile and reflecting over it’s members in a plugin-esque system.
I need to be able to update/overwrite these DLL while the system is running but it appears that after calling System.Reflection.Assembly.LoadFile the file is subsequently locked.
Does anyone know of a way to unlock the file?
I have read about loading the file in a separate appdomain? Are there any pitfalls to this approach?

How to register a Controller into ASP.NET MVC when the controller class is in a different assembly?

My goal is to modify asp.net mvc’s controller registery so that I can create controllers and views in a separate (child) assembly, and just copy the View files and the DLLs to the host MVC application and the new controllers are effectively “Plugged In” to the host app.