最近,对于我的一个发布定义,我一直遇到此错误,但我无法弄清为什么会这样。
我尝试手动删除r1目录中的文件夹,但未能删除'a'文件夹(即工件目录),并说其中的文件夹或文件在另一个程序中处于打开状态。但是令人震惊的是,“ a”文件夹为空,甚至没有隐藏的文件和文件夹。
作为一种变通方法,要使该发行版成功部署,每当我要部署新发行版时,都必须重新启动服务器。真的很烦人。
以下是我在“发行版定义”摘要上看到的完整错误。
错误(2)
下载工件失败: Microsoft.VisualStudio.Services.Agent.Worker.Release.Artifacts.ArtifactDirectoryCreationFailedException: 无法创建发布工件目录“ C:\ Agents \ DA_CID22 \ r1 \ a”。 ---> System.IO.IOException:该进程无法访问文件'\?\ C:\ Agents \ DA_CID22 \ r1 \ a',因为该文件正在由另一个文件使用 处理。在System.IO.Win32FileSystem.RemoveDirectoryHelper(String fullPath,布尔递归,布尔throwOnTopLevelDirectoryNotFound) 在System.IO.Win32FileSystem.RemoveDirectory(String fullPath,Boolean 递归) Microsoft.VisualStudio.Services.Agent.Util.IOUtil.DeleteDirectory(字符串 路径,布尔contentsOnly,布尔continueOnContentDeleteError, 的CancellationToken cancelToken() Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseFileSystemManager.EnsureEmptyDirectory(String directoryPath,CancelationToken cancelToken)-内部结尾 异常堆栈跟踪--- Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseFileSystemManager.EnsureEmptyDirectory(String directoryPath,CancelationToken cancelToken) Microsoft.VisualStudio.Services.Agent.Worker.Release.RetryExecutor.Execute(操作 行动) Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.CreateArtifactsFolder(IExecutionContext 执行上下文,字符串工件(WorkingFolder)位于 Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.d__34.MoveNext() ---从上一个引发异常的位置开始的堆栈跟踪- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务) Microsoft.VisualStudio.Services.Agent.Worker.Release.ReleaseJobExtension.d__31.MoveNext()
无法创建发布工件目录 'C:\ Agents \ DA_CID22 \ r1 \ a'。
任何帮助或建议都会很有帮助。
答案 0 :(得分:2)
这不时发生...我花了几天时间试图找出一个简单的解决方案(所有尝试过的解决方案,我自己尝试过),但是要重新启动私有代理。我的结论是,代理程序进程以某种方式挂在工件Windows文件夹中。您可以在https://lockhunter.com/之类的程序中看到这一点。这里没有一个简单的解决方案...有时候,您必须杀死未正确释放该文件的罪魁祸首过程,或者,如果您幸运地使用如前所述的工具将文件句柄释放到该文件中...