【问题标题】:Is there a way that VSO vNext builds can clean up long directory paths (>260 characters)VSO vNext 构建有没有办法清理长目录路径(>260 个字符)
【发布时间】:2016-03-29 02:48:57
【问题描述】:

我已经设置了一个 .Net TFS Build vNext 构建来运行以下内容:

  • npm 安装
  • 一饮而尽
  • Visual Studio 解决方案构建

构建被配置为在检查源之前自动清理,如下所示:

我对这个构建有两个问题,但这个问题是关于问题 #2。

  1. npm install 步骤无法安装 phantomjs,因为命令 node install.js 找不到 node,即使 node 在系统路径中。

  2. 运行配置为 Clean 的构建失败,因为下面的路径太长错误。

[错误]指定的路径、文件名或两者都太长。完全限定文件名必须少于 260 个字符,目录名必须少于 248 个字符。

我希望 Clean 设置能够正常工作并清理这些长路径,但我不知道如何使其正常工作。

当我尝试在 TeamCity 中重新创建相同的构建时,Clean 选项工作得很好。另外,我知道如果我可以访问运行 clean 的脚本,它可以使用 *rmdir /S /Q 来删除这些路径。希望 VSO 构建可以运行这个或其他工作。

【问题讨论】:

  • 您可以将 Clean 设置为 false 并利用预构建脚本选项进行手动清理。
  • 感谢 Evan,我不知道它有任何预构建挂钩。有这方面的文档吗?
  • 在第 3 步下注明here。它应该在“构建”或“选项”选项卡下。
  • 我相信这篇文章描述的是基于 XAML 的 VSO 构建。我正在使用只能从 VSO 本身配置的 vNext 构建,它们不提供预/后构建选项。
  • 啊,所以您应该在构建解决方案之前添加一个构建步骤来运行您的手动清理命令。

标签: tfs tfsbuild azure-devops


【解决方案1】:

[编辑] - 我已确认此问题已在最新的 Build 代理版本 (1.85.1) 中得到修复

MS 人员告诉我,这目前是 vNext 版本中的一个错误,将在该产品的下一个版本中修复。看到此修复程序发布后,我将更新此答案。

【讨论】:

  • 你如何更新你的代理(和任务,如果你是)Dan?
  • 我在尝试运行 gulp 任务时实际上遇到了字符限制错误。
  • 最大路径问题仍然存在限制。此特定修复仅适用于存储库“干净”设置。例如,我不能使用 nuget restore 任务,除非我在我的 npm install 任务之前这样做,因为在运行“npm install 我将有目录> 260个字符限制。在这种情况下,重新排序已经解决了我的问题。如果你有更多细节请发布另一个问题,我会看看我是否可以提供帮助。
  • 我通过升级到预发布的 NPM v3 版本解决了我的问题。显然,文件夹的扁平化是在 v3 之后的 npm install 中烘焙的。
  • 如何将 VSO 构建代理升级到 npm v3?
【解决方案2】:

从管理控制台运行:npm install npm -g

运行 npm versionnpm -v 以确保它正常工作。另请注意,如果您安装了节点,您希望浏览到节点目录并从那里更新它。

另请注意,vso 代理有时会存储本地版本。浏览至agent/tasks/npm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2020-09-23
    • 2014-07-04
    • 1970-01-01
    相关资源
    最近更新 更多