System.Reflection.Assembly.LoadFile Locks File

asp.net, plugins, reflection

Solution

If you use this:

 System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))

It will not lock the file.

Edit

While this works, it is not the best solution, but the better way of doing it is a lot more involved (too much for just pasting all the code here for it).

I have created a public repository on Github here with all the code for doing this properly:

Loading Assemblies without Locking by using Shadow Copying.

Problem

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?

Original source