環境
- ASP.NET Core
- Azure Web Apps
- Deployment Slot は使ってない
- VSTS
現状
App Service に Deploy しようとしていますが、 ASP.NET Core アプリ(.dll) がロックされていてデプロイできないです。 再起動すればデプロイ自体はできるようになりますが、 デプロイするたびに再起動していては人権がないのでそこも解決していきます。
エラーメッセージ
2017-11-09T11:24:34.6820290Z ##[error]Failed to deploy App Service. 2017-11-09T11:24:34.6830278Z ##[error]Error Code: ERROR_FILE_IN_USE 2017-11-09T11:24:34.6830278Z More Information: Web Deploy cannot modify the file '{ProjectName}.dll' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE. 2017-11-09T11:24:34.6830278Z Error count: 1. 2017-11-09T11:24:35.4658925Z ##[error]Error: C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe failed with return code: 4294967295 2017-11-09T11:24:35.4758869Z ##[section]Finishing: Azure App Service Deploy: {webAppName}
対策
App Service の終了と起動の処理を Build Task に追加した
具体的な方法
- App Service の終了と起動を行う Extension を VSTS に追加する
- Build Task に設定する
App Service に 必要な Extension を追加する
以下の Extension を入れます。
Under certain circumstances, you will have to stop your Azure AppService / Azure WebApp before deployment as it may lock DLL-files (and thus prevent a successful deployment).
ウケるw