由于NuGet版本不正确,TFS Build 2015失败,即使构建计算机中存在所需的NuGet版本

Mat*_*zer 4 tfs tfsbuild visual-studio nuget tfs-2015

我正在使用新的脚本系统配置TFS 2015构建.在构建期间,当NuGet重新编译某些包时,它会因以下错误而失败:

'System.Collections 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Diagnostics.Debug 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Globalization 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Linq 4.0.0'软件包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Resources.ResourceManager 4.0.0'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Runtime 4.0.20'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Runtime.Extensions 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

'System.Threading 4.0.10'包需要NuGet客户端版本'3.0'或更高版本,但当前的NuGet版本是'2.8.60318.667'.

顺便说一下,我已经在整个构建机器中安装了Visual Studio 2015,并且我已经检查了扩展管理器菜单中是否存在NuGet 3.1.

我想TFS Build正在使用不同的NuGet安装位置,但我无法弄清楚它在哪里寻找它以及如何将它从2.8.x更新到3.x.

Yan*_*nko 6

这个问题有一个解决方法.

默认情况下,如果使用VSBuild/MSBuild任务,则只能nuget restore通过相应的复选框选择是否运行.但是有一个名为NuGet Installer的独立任务(它位于Package部分).它公开了NuGet.exe自定义路径的可选字段:

在此输入图像描述

所以,这是一个想法:

  • 在相应的VSBuild/MSBuild步骤之前安排NuGet安装程序步骤
  • 指定NuGet.exe的正确自定义路径
  • 确保VSBuild/MSBuild步骤中的Restore NuGet packages标志已关闭

注意:直接在构建代理程序内部替换物理可执行文件的解决方案可能会很好地运行,直到更新代理程序(无论是故意的还是自动的),并用更新但仍过时的版本覆盖NuGet.exe.