我有一个ASP.NET 4.6.1应用程序,我试图使用TeamCity和MSBuild部署到远程Web服务器。以下是TeamCity中的MSBuild构建步骤。
当我在TeamCity中运行构建时,它总是在使用FILE_IN_USE_ERROR的构建步骤失败。在错误之前更新的DLL通常是相同的,但有时它们是不同的。
[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]
我已经阅读了很多文章(here,here,here和here),建议我在部署前删除app_offline.htm文件这样IIS就可以重新路由流量,文件锁定问题就会停止。我试过了,但它没有用。在此构建步骤中,我仍然会收到正在使用的文件。
我还阅读了很多其他讨论,其他解决方案是停止应用程序池,部署应用程序更新,以及启动应用程序池。这不是一个现实的解决方案,因为部署通常持续15到20分钟。另外,这并不能让我向任何当前用户显示一条好消息。
我现在已经阅读了一段时间了,这似乎是部署到IIS Web服务器的常见用例。如果没有锁定文件,这不能正常工作吗?有没有人知道这个问题的任何其他解决方案?
答案 0 :(得分:0)
我会尝试通过停止应用程序池来查看这是否是问题的根本原因。
但是我不确定为什么它在.csproj文件上失败,因为通常您不会在服务器上部署这些文件。因此,要么在其他文件上失败(实际上是Web应用程序正在使用),要么在构建过程中失败,而不是在部署过程中失败(比应用程序池停止将没有任何影响)。