Вы можете всегда развертывать в новой папке и просто переключать корневую папку работающего сайта.
Я делаю это путем создания архива и перемещения этого архива на рабочий сервер и, в конце концов, запускаю сценарий развертывания (powershell). Это не прямое решение вашей проблемы, это просто обходной путь, который может дать вам представление.
Пример сценария powershell для развертывания:
Param(
[string]$project,
[string]$archive,
[string]$config
)
#####################################################################
# Functions
#
function Unzip
{
Param([string]$fname, [string]$output)
if ($PSVersionTable.PSVersion.Major -ge 5)
{
Expand-Archive $fname $output -Force
}
else
{
& .\7za.exe x $fname -o"$output" -bb0 -bd -y
}
}
#####################################################################
$current=(Get-Date).ToString("yyyy.MM.dd")
$base_path="D:"
$backup="$base_path\$project\bak-$current"
echo "Deploying project $project"
echo "Copy new binaries to: $base_path\$project\$current"
Unzip $archive $base_path\$project\$current
echo "Copying new config to: $base_path\$project\$current"
Copy-Item "$config" -Destination "$base_path\$project\$current\" -Force
echo "Creating log folder"
New-Item "$base_path\$project\$current\logs" -type directory -force
echo "Switch IIS physical path for website: $website"
Import-Module WebAdministration
Set-ItemProperty "IIS:\Sites\$website" -Name PhysicalPath -Value "$base_path\$project\$current"