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?
If you use this:
System.Reflection.Assembly.Load(System.IO.File.ReadAllBytes(path))
It will not lock the file.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With