VSTA Deploy 出現 ERROR_FILE_IN_USE 的錯誤解決方法

使用 VSTS 的 release 功能時,持續佈署時會出現 ERROR_FILE_IN_USE 的錯誤

詳見討論區 Deployment fails due to file in use #694

目前感覺是 Deploy 的時候會產生 App_Offline.htm 檔案,讓 IIS 停止工作
但是卻因為停止需要一段時間,所以還是會出現檔案被使用的狀態

因此目前想到一個解法就是自己先上傳 App_Offline.htm 檔案,然後等待一段時間之後再 Deploy。

辦法如下

第一個 Command Line 是 Echo
Argument 輸入 app offline > App_Offline.htm
產生一個 App_Offline.htm 檔案
Working folder 輸入 $(System.DefaultWorkingDirectory)

FTP設定如下

這邊 FTP Service Endpoint 必須根據驚嘆號說明,選擇右邊的齒輪,去建立一個 FTP 端點

第三個是用來拖時間的,ping 五次等五秒

第四個一樣就是 deploy
不過這次不用勾選 Take App Offline 了

最後一個 PowerShell Script,用來把 App_Offline.htm 刪除
Type 選擇 Inline Script,
然後下面輸入

$u = '<ftp username>'
$p = "<ftp password>"
$f = "<ftp url>/site/wwwroot/App_Offline.htm"
$ftprequest = [System.Net.FtpWebRequest]::create($f)
$ftprequest.Credentials =  New-Object System.Net.NetworkCredential($u,$p)
$ftprequest.Method = [System.Net.WebRequestMethods+Ftp]::DeleteFile
$ftprequest.GetResponse()
Write-Host "$f was deleted"

如此就可以每次都順利的佈署了