我有一个ASP.NET 4.6.1应用程序,正在尝试使用TeamCity和MSBuild将其部署到远程Web服务器。以下是TeamCity中的MSBuild构建步骤。
当我在TeamCity中运行构建时,它总是在此构建步骤上失败,并显示FILE_IN_USE_ERROR。通常在错误之前更新的DLL文件是相同的,但有时会有所不同。我已经阅读了许多关于在部署之前放置app_offline.htm文件以便IIS可以重定向流量并停止文件锁定问题的文章(这里, 这里, 这里, 和 这里)。我尝试过,但它不起作用。在此构建步骤中,我仍然遇到文件正在使用的问题。[MSBuild输出] 信息: 更新文件 (MyApp\bin\roslyn\Microsoft.VisualBasic.Core.targets). [10:35:23]
[MSBuild输出] 信息: 更新文件 (MyApp\bin\roslyn\System.AppContext.dll). [10:35:23]
[MSBuild输出] 信息: 更新文件 (MyApp\bin\roslyn\System.Collections.Immutable.dll). [10:35:23]
[MSBuild输出] MSDEPLOY : 错误代码: ERROR_FILE_IN_USE [C:\BuildAgent\work\b89cd3dfa447b\MyApp\MyApp.csproj]
我还阅读了很多其他讨论,另一个解决方案是停止应用程序池,部署应用程序更新,然后启动应用程序池。但这不是一个现实的解决方案,因为部署通常需要15到20分钟。此外,这也无法向任何当前用户显示良好的消息。
我已经阅读了一段时间关于这个问题,似乎这是部署到IIS Web服务器的常见用例。难道不应该在不锁定文件的情况下正常工作吗?有人知道解决这个问题的其他方法吗?