TFS Build 不断抛出“无法执行获取操作,因为该文件已在本地存在”错误
Posted
技术标签:
【中文标题】TFS Build 不断抛出“无法执行获取操作,因为该文件已在本地存在”错误【英文标题】:TFS Build keep throwing 'Unable to perform the get operation because the file already exists locally' error 【发布时间】:2016-07-11 02:52:21 【问题描述】:我目前正在开发一个基于 ASP.NET 的 Web 应用程序,该应用程序通过 TFS 进行版本控制。配置了 TFS 构建服务器,因此它在每次签入时都运行构建过程。我的问题是,每当我修改 Web.Config 文件并签入修改时,构建过程在获取源代码时会不断抛出错误,上面写着“无法执行获取操作,因为该文件已在本地存在”。我试图从 TFS 中删除 Web.Config 并签入修改,但错误仍然存在,说“无法执行删除操作,因为该文件已在本地存在”。但是当我从构建服务器的文件系统中手动删除文件时,问题就消失了。你认为问题是什么? 我在谷歌上没有找到任何与此相关的东西,所以如果你能帮助我,我会非常高兴。 非常感谢!
【问题讨论】:
一般来说,直接在构建服务器上编辑文件是个坏主意。听起来这可能是这个问题的根源。您是否尝试过擦除构建服务器上的项目文件并强制整个项目执行? 是的,你是对的。最终的解决方案是我更改了 Web 服务器上的 web.config 文件,而不是构建服务器。 【参考方案1】:在您的构建定义中,您是否将 Clean Workspace 选项设置为 All?
如果这没有帮助,您能否将 Logging Verbosity 设置为 Diagnostic 并查看是否有关于该问题的更多详细信息。
【讨论】:
感谢您的回复。我忘了提到构建服务器使用新的 TFS 2015 构建定义,所以我无法尝试您的建议。我在 2015 版本上既没有找到干净的工作区,也没有找到日志记录详细程度设置。【参考方案2】:由于您使用的是 TFS 2015 Build(不是 XAML Build),因此您可以在定义的 repo 选项卡上检查 Clean。
仅供参考 - VSTS 和 TFS 15 RC1 中的新代理将 /overwrite
传递给 tf get
,因此您无需每次都进行干净的构建。
【讨论】:
【参考方案3】:在 TFS 2015 VSTS 中,我通过从如下所示的下拉列表中选择 true 解决了该问题:
在构建成功后不要忘记将其设置回 false,因为如果您将其保持打开状态,它将始终进行清理,因此构建将花费更长的时间。
【讨论】:
【参考方案4】:在我的情况下,将 clean 设置为 true 不起作用,我只是将本地路径目录更改为不同的目录并且它起作用了。
【讨论】:
【参考方案5】:在 TFS 2018 的构建定义中收到错误“警告 s - 无法获取,因为目录已存在”后,我遇到了这个线程。对我来说,我最终发现问题是因为我指定了完整的解决方案path 而不仅仅是构建定义的服务器路径中的解决方案目录。从路径中删除解决方案名称(所以它只是一个文件夹引用)解决了这个问题。希望能帮助其他人遇到这个线程。
TFS Build Definition Image
【讨论】:
以上是关于TFS Build 不断抛出“无法执行获取操作,因为该文件已在本地存在”错误的主要内容,如果未能解决你的问题,请参考以下文章
Sonarqube v.4 TFS 任务“发布分析结果”抛出错误“无法获取指标”