tfs - 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
不过,这似乎不会产生影响,因为我可以指定该参数的唯一位置是在项目构建步骤期间,并且错误发生在“获取源”步骤(在构建步骤之前)。
奇怪的是,当我遇到这个问题时,它会在之后的每个构建中发生,并且只能通过重新启动来修复,这让我认为多线程场景不太可能。
我们也一次只运行 1 个构建(代理有一个构建队列)。
我们为映射的存储库启用了“清理”。
任何可能导致此“访问路径'X.dll'的想法被拒绝。” 错误?
如果您需要我发布更多详细信息或代码片段,请发表评论,我很乐意这样做!
编辑 - 'TE.ProcessHost.Managed.exe' 正在使用该文件,即使构建没有运行
解决方案
推荐阅读
- python - AttributeError:“DataFrame”对象没有属性“ix”
- swift - Swift - tableView cellForRowAt 中的异步调用
- c# - 从另一个线程读取 ListView SelectedItems 集合
- python - 在 Python 中从 JSON API 中提取财务数据
- c++ - 为嵌套模板编写 C++17 样式“_v”帮助器模板的正确方法
- python - 为什么输出显示内存代码?
- java - 从 TreeMap 中消除重复条目
对象数组值 - java - 如何在不获取绑定异常的数组的情况下提供多个数组输入
- cookies - .ASPXAuth cookie 在登录后永远不会出现
- python-3.x - tkinter 滚动条旁边出现奇怪的白色条纹