由于 adb.exe,构建服务无法删除 Android 项目文件夹

Build service cannot delete Android project folder because of adb.exe

我们正在我们的 TFS 构建服务器上构建一些 Xamarin 项目,并且不时看到以下错误:

Exception Message: The process cannot access the file 'D:\Builds592\Sources\Component\OurService.Android' because it is being used by another process. (type IOException) Exception Stack Trace: at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryLongPath(String path, Boolean recursive, Boolean followJunctionPoints) at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryLongPath(String path, Boolean recursive, Boolean followJunctionPoints) at Microsoft.TeamFoundation.Common.FileSpec.DeleteDirectoryLongPath(String path, Boolean recursive, Boolean followJunctionPoints) at Microsoft.TeamFoundation.Build.Workflow.Activities.DeleteDirectory.Execute(CodeActivityContext context) at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)

Inner Exception Details:

Exception Message: The process cannot access the file because it is being used by another process (type Win32Exception)

它发生在清理工作区期间,它首先删除源目录并且仅针对 empty Android 项目文件夹。查看资源监视器,它显示它是 C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe,它保持对文件夹的锁定。锁定似乎会在一段时间后或通过重新启动服务器来释放。

我们正在使用 TFS 2015 Update 3 XAML 构建,构建服务器安装了 VS 2015 Update 3 和 Xamarin 4.2.2.6。我们在开发人员机器上没有发现本地问题,但这可能只是因为我们没有定期删除源文件夹。

关于如何解决这个问题有什么建议吗?

确保特定文件不是 Read-Only,并检查您的构建服务帐户是否具有足够的权限,例如 运行 作为本地管理员.

通常此类问题将通过 cleaning team foundation cache 在构建代理机器上解决。

这似乎已被一些 Xamarin 更新修复,因为我们已经有一段时间没有看到它了。