首页 > 解决方案 > TFS Build 2015“拒绝访问路径”

问题描述

我有一个包含大约 70 个项目的解决方案,偶尔(可能 1/5 次运行)在 TFS 构建定义的“获取源”阶段,它会停止并出现以下错误:

Access to the path 'D:\BuildAgent2018\_work\1\s\Implementation\Release\FileHelpers.dll' is denied.

'FileHelpers.dll' 是一个 NuGet 包,我们将其拉入解决方案中的多个不同项目,但是,我们将包直接提交到源,我们在构建定义中不使用 NuGet 恢复,第一步是“获取源” - 这就是它有时会失败的地方。

当软件以发布模式构建时,它会将自身构建到 \Implementation\Release 文件夹中,但绝对值得注意的是,在实际源代码中,\Implementation\Release 文件夹是空的,因此只有“FileHelpers.dll”等文件通过以发布模式构建的项目到达那里,这意味着“FileHelpers.dll”来自构建服务器上的先前构建。

我听说禁用多线程构建可以解决问题,因为多个项目同时复制/删除同一个文件可能是导致此问题的原因,但是,所有解释都说明了以下内容:

确保使用以下命令显式运行 MSBuild:

/p:BuildInParallel=false

或者

/m:1

不过,这似乎不会产生影响,因为我可以指定该参数的唯一位置是在项目构建步骤期间,并且错误发生在“获取源”步骤(在构建步骤之前)。

奇怪的是,当我遇到这个问题时,它会在之后的每个构建中发生,并且只能通过重新启动来修复,这让我认为多线程场景不太可能。

任何可能导致此“访问路径'X.dll'的想法被拒绝。” 错误?

如果您需要我发布更多详细信息或代码片段,请发表评论,我很乐意这样做!

编辑 - 'TE.ProcessHost.Managed.exe' 正在使用该文件,即使构建没有运行

标签: tfstfsbuildtfs-2015

解决方案


推荐阅读