What is it? Its a .Net feature. When shadow copy is enabled on an appdomain, assemblies loaded in that appdomain will be copied to a shadow copy cache directory, and will be used from there. This is great because the original file is not locked. So it can be changed at will. ASP.NET uses this extensively. Actually, shadow copy is enabled on every appdomain created by ASP.NET.
More information is here:
Catch? One should be careful when an application writes any shadow copy assemblies it should do it in its own user account’s temp directory, not Local System’s or admin.