Azure Devops:如何使用 "IIS web app deploy" 任务启用重命名锁定文件 (RenameFilesFlag)

Azure Devops : How to enable the Rename locked files (RenameFilesFlag) with an "IIS web app deploy" task

我在 Azure Devops 中尝试使用发布管道进行部署时遇到锁定 DLL 文件的问题。

报错截图为:

输出为文本:

2021-03-31T17:43:18.2626492Z ##[error]Error Code: ERROR_FILE_IN_USE
More Information: Web Deploy cannot modify the file 'Microsoft.Data.SqlClient.SNI.x64.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.
    Error count: 1.

问题似乎是由错误处理的 .NET 资源引起的。 (例如:非托管 SqlConnection) 反正我改不了源码

这是我的发布管道。

这是我的问题:

Q1) 我正在尝试使用“-RenameFilesFlag”(MSDEPLOY_RENAME_LOCKED_FILES),如下所述:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-deployment?view=azure-devops

web.config file locked during Azure App Service Deploy task

我该如何指定这个参数? 我必须填写“附加参数”文本框吗?我尝试了不同的值,但我总是得到 “无法识别的参数”错误。

Q2) 如果“-RenameFilesFlag”不适用于此任务。 我可以使用“使应用程序离线”来解锁文件吗?

Q3) 在 Whosebug 上的另一个 post 上,我看到了一个特定于“重命名锁定文件”的复选框选项

我的任务中没有这个选项。我是否可能混淆了两种类型的部署任务?

MSDEPLOY_RENAME_LOCKED_FILES

据我所知,该方法只支持Azure Web APP服务。此选项用于设置 Azure App settings(cloud)。它不适用于 IIS 部署(本地)。

##[error]Error Code: ERROR_FILE_IN_USE

要解决这个问题,您可以尝试以下方法:

1.You 可以在 IIS Web 部署任务中设置 Take App Offline 选项。

这是关于 Taking an Application Offline before Publishing

的文档

2.You 可以在部署应用程序之前停止您的网站并在部署后重新启动它。

您可以添加 IIS web app manage task 来停止和启动 IIS 网站。

例如:

更新1:

正如 ssinfod 的评论:停止应用程序池可以解决此问题。

我们也可以在IIS web app manage task

中实现