在VSO上为ASP.net 5进行第二次运行时,构建代理失败

时间:2016-02-09 20:13:05

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

我正在使用VSO为新创建的ASP.NET 5项目创建自动构建。我按照MSDN post进行了一些调整,以下项目有效:

  1. 在VSO中自动构建和部署ASP.NET项目
  2. 使用VS 2015从我的笔记本电脑构建和部署ASP.NET项目
  3. 我要做的是在笔记本电脑上创建构建代理。我下载了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 ## [错误] 260个字符,目录名称必须少于248个字符。

         

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

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

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

1 个答案:

答案 0 :(得分: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脚本,并在构建定义中添加其他步骤来执行这些操作。