TeamCity使用MSDEPLOY时出现ERROR_FILE_IN_USE错误

3

我有一个ASP.NET 4.6.1应用程序,正在尝试使用TeamCity和MSBuild将其部署到远程Web服务器。以下是TeamCity中的MSBuild构建步骤。

enter image description here

当我在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]

我已经阅读了许多关于在部署之前放置app_offline.htm文件以便IIS可以重定向流量并停止文件锁定问题的文章(这里, 这里, 这里, 和 这里)。我尝试过,但它不起作用。在此构建步骤中,我仍然遇到文件正在使用的问题。
我还阅读了很多其他讨论,另一个解决方案是停止应用程序池,部署应用程序更新,然后启动应用程序池。但这不是一个现实的解决方案,因为部署通常需要15到20分钟。此外,这也无法向任何当前用户显示良好的消息。

我已经阅读了一段时间关于这个问题,似乎这是部署到IIS Web服务器的常见用例。难道不应该在不锁定文件的情况下正常工作吗?有人知道解决这个问题的其他方法吗?


有趣的是...我刚开始遇到了同样的问题。我正在运行一个带有类似参数的MSBuild.exe。我刚刚也更新了最新版本的TeamCity。 - Gwasshoppa
我也遇到了相同的问题 :( 更奇怪的是,.csproj文件既没有被部署,也没有被使用,甚至不在服务器上。这一定是一个bug。但它正在破坏发布!我只是在一个带有asp core的IIS服务器上进行Web部署。 - NightCabbage
1个回答

1

我会尝试停止应用程序池来查看是否这是问题的根本原因。

但我不确定为什么.csproj文件会失败,因为通常您不会在服务器上部署这些文件。所以要么它失败在不同的文件上(实际上由Web应用程序使用),要么它在构建过程中失败,而不是部署过程中失败(那么应用程序池的停止将没有影响)。


我遇到了和他一样的问题,这个方法完美解决了,我重新启动了我的Windows服务器。 - MathieuAuclair

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接