VSTS \ TFS 2017版本定义无法在'C:\ Agents \ DA_CID22 \ r1 \ a'中创建版本工件目录

时间:2018-12-02 14:17:46

标签: azure-devops azure-pipelines-release-pipeline tfs2017 azure-pipelines-build-task build-agent

最近,对于我的一个发布定义,我一直遇到此错误,但我无法弄清为什么会这样。

我尝试手动删除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'。

任何帮助或建议都会很有帮助。

1 个答案:

答案 0 :(得分:2)

这不时发生...我花了几天时间试图找出一个简单的解决方案(所有尝试过的解决方案,我自己尝试过),但是要重新启动私有代理。我的结论是,代理程序进程以某种方式挂在工件Windows文件夹中。您可以在https://lockhunter.com/之类的程序中看到这一点。这里没有一个简单的解决方案...有时候,您必须杀死未正确释放该文件的罪魁祸首过程,或者,如果您幸运地使用如前所述的工具将文件句柄释放到该文件中...