VSO 上 ASP.net 5 的第二个 运行 构建代理失败

Build agent fails on second run for ASP.net 5 on VSO

我正在使用 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\s\MyMeds\src\MyMeds\project.json

2016-02-09T17:13:50.4535551Z ##[error]Get-ChildItem : The specified path, file name, or both are too long. The fully qualified file name must be less than

2016-02-09T17:13:50.4535551Z ##[error]260 characters, and the directory name must be less than 248 characters.

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

我猜想在构建开始之前工作区会被清理干净,但事实似乎并非如此。另外,如果我手动清除 _work 目录,构建就会成功。我试图清除 PowerShell 脚本中的工作,但这失败了,因为脚本在该目录中 运行。

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

这是“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 文件中删除预发布脚本,并在您的构建定义中添加额外的步骤来执行这些操作。