生成代理在 VSO 上第二次运行 ASP.net 5 时失败



我正在使用 VSO 为新创建的 ASP.NET 5 项目创建自动化构建。我关注了MSDN的帖子,经过一些调整,以下项目有效:

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

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

不起作用的是我第二次排队构建。生成执行以下命令失败:

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

错误是:

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 ##[error]at C:\agent_work\1\s\MyMeds\Prebuild.ps1:28 字符: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版本,这会导致长路径问题。有关详细信息,请参阅此问题:将节点更新为 5.x,将 npm 更新为 3.x

现在的解决方法是从 project.json 文件中删除预发布脚本,并在生成定义中添加其他步骤来执行这些操作。