【问题标题】:Build agent fails on second run for ASP.net 5 on VSO在 VSO 上为 ASP.net 5 第二次运行构建代理失败
【发布时间】:2016-02-09 20:13:05
【问题描述】:

我正在使用 VSO 为新创建的 ASP.NET 5 项目创建自动构建。我遵循MSDN post 并进行了一些调整,以下项目起作用:

  1. 在 VSO 中自动构建和部署 ASP.NET 项目
  2. 使用 VS 2015 从我的笔记本电脑构建和部署 ASP.NET 项目

我想做的是在我的笔记本电脑上创建一个构建代理。我下载了 agent.zip 文件并运行了 powershell 配置脚本。当我对第一个构建进行排队时,VSO 会联系我的构建代理,构建工作并发布到 Azure。

第二次排队构建时不起作用。构建失败执行以下命令:

Get-ChildItem -Path $PSScriptRoot\src -Filter project.json -Recurse | ForEach-Object { & echo $_.FullName }

错误是:

2016-02-09T17:13:50.1055064Z C:\agent\_work\1\s\MyMeds\src\MyMeds\project.json

2016-02-09T17:13:50.4535551Z ##[error]Get-ChildItem :指定的路径、文件名或两者都太长。完全限定的文件名必须小于

2016-02-09T17:13:50.4535551Z ##[error]260个字符,目录名不能超过248个字符。

2016-02-09T17:13:50.4535551Z ##[错误]在 C:\agent_work\1\s\MyMeds\Prebuild.ps1:28 char:1

我猜想在构建开始之前工作区会被清理干净,但似乎并非如此。此外,如果我手动清除 _work 目录,则构建成功。我试图从 PowerShell 脚本中清除工作,但由于脚本在该目录中运行而失败。

关于如何清除工作目录以便多次构建成功的任何建议?

【问题讨论】:

    标签: powershell azure msbuild asp.net-core azure-devops


    【解决方案1】:

    这是由“PrePublish”脚本中的 npm install 命令和 VS 使用的 npm 版本引起的。

      "scripts": {
        "prepublish": [ "npm install npm@latest", "npm version", "npm install", "bower install", "gulp clean", "gulp min" ]
      } 
    

    Windows MAXPATH 限制为 260 个字符,而旧的 npm 版本不适用。最新的 npm 3.x 版本已修复此问题。但是 VS 总是使用 1.4.9 版本,这会导致长路径问题。详情见本期:Update node to 5.x and npm to 3.x

    目前的解决方法是从 project.json 文件中删除 prepublish 脚本,并在构建定义中添加额外的步骤来执行这些操作。

    【讨论】:

    • 解决了路径问题,因此将其标记为答案。感谢解决方法,很高兴听到这将在 GA 版本中得到修复。
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 2015-12-01
    • 2015-09-29
    • 1970-01-01
    • 2020-03-28
    • 2020-08-01
    • 2016-03-08
    • 2013-07-14
    相关资源
    最近更新 更多