带有 Hangfire 的 TeamCity MSDeploy .NET 应用程序失败

TeamCity MSDeploy .NET App with Hangfire fails

我正在尝试使用 Hangfire。这是我的问题,当我尝试发布到 azure 时发布失败,因为另一个进程正在使用 DLL。

VSMSDeploy] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets(4276, 5):错误 ERROR_FILE_IN_USE:Web 部署任务失败。 (Web 部署无法修改目标上的文件 'Takenet.WebApi.dll',因为它被外部进程锁定。为了使发布操作成功,您可能需要重新启动应用程序以释放锁定,或者使用下次发布尝试时 .Net 应用程序的 AppOffline 规则处理程序。 了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.)

我使用了 AppOffline 规则,该规则在我的 web 应用程序的根目录中添加了 App_Offline.htm。一旦文件存在,IIS 将关闭我的应用程序的工作进程并卸载正在使用的所有文件,但发布仍然失败看起来发布比关闭更快 =/

有人能帮忙吗?

首先,我在 PublishProfile 中添加了 AppOffline 规则,但看起来这条规则仅在您使用 Visual Studio 进行部署时使用 =/ 所以我不得不将这条规则应用于团队城市。

在命令 line/build server

上设置这些属性

当您调用 msbuild.exe 时,您可以像传递任何其他 MSBuild 属性 一样传递此 属性。使用以下语法,

/p:EnableMSDeployAppOffline=true /p:MSDeployUseChecksum=true