Это связано с теневым копированием.Вы можете отключить его следующим образом в web.config:
hostingEnvironment shadowCopyBinAssemblies="false"
Вы также можете использовать обходной путь, если вышеуказанные настройки вообще не работают с событием перед сборкой:
if exist "$(TargetPath).locked.bak" del "$(TargetPath).locked.bak"
if exist "$(TargetPath).bak" del "$(TargetPath).bak"
if exist "$(TargetPath).locked" ren "$(TargetPath).locked" "$(TargetPath).locked.bak"
if exist "$(TargetPath)" ren "$(TargetPath)" "$(TargetPath).bak"
Вы можете полностью отключить службу ShadowCopy в Windows, чтобы вам не приходилось устанавливать эти значения для всех решений, но это нарушит многие функции, поэтому я не рекомендую это.
Вы можетевсегда используйте пользовательский пакетный скрипт для вызова по событию postbuild последнего проекта (согласно порядку сборки), который будет выполнять все операции копирования (которые я сейчас использую).