Теневая копия создает копию сборки, на которую вы ссылаетесь.
Причина этого заключается в том, что .Net (точнее, Windows) не может выгружать (некоторые) сборки в процессе после загрузки.Из-за этого вы никогда не сможете заменить сборку, не остановив весь процесс, потому что файл остается заблокированным ОС.
Однако если у вас есть теневая копия .Net фактически использует ее для загрузки ваших классов, вы можете заменитьИсходный файл .dll и только теневая копия (о которой никто не заботится) остается заблокированной.
Это особенно важно в некоторых средах (например, на веб-сервере, где вы явно не хотите выключать весь сервер).просто запустить новую версию какого-то веб-приложения).