我正在使用新的脚本系统配置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.
答案 0 :(得分:6)
这个问题有一个解决方法。
默认情况下,如果您使用VSBuild / MSBuild任务,则只能通过相应的复选框选择是否运行nuget restore
。但是有一个名为 NuGet Installer 的单独任务(它位于 Package 部分)。它公开了NuGet.exe的自定义路径的可选字段:
所以,这是一个想法:
注意:直接在构建代理程序内部替换物理可执行文件的解决方案可能会很好地运行,直到更新代理程序(无论是故意的还是自动的),并用更新但仍过时的版本覆盖NuGet.exe。 / p>
答案 1 :(得分:2)
比我想象的要容易......
检查TFS构建日志后,我找到了以下字符串:
X:\ TfsBuild \代理\项目\剂\工人\工具\ NuGet.exe 恢复 " X:\ TfsBuild \代理\项目\ c57207ab \路径\到\溶液\ whatever.sln" -nonInteractive
也就是说,当从TFS Web Access下载TFS构建代理ZIP时,它包含一个过时的NuGet可执行文件。
最糟糕的部分是没有公开发布的NuGet Command-Line 3.x可执行文件,而我需要在I've found a post in the official NuGet blog指向NuGet Command-Line 3.1 beta version executable已更换{{}}后使用Google构建代理工具位置中的那个与beta 1一起,错误得到修复。
如果您想使用XAML版本,您需要下载相同的NuGet命令行可执行文件并将其复制到C:\Program Files\Microsoft Team Foundation Server 14.0\Tools\nuget.exe
并替换现有版本...
答案 2 :(得分:0)
我遇到了同样的问题。您需要使用更新版本的nuget.exe 。版本 3.5.0 解决了我的问题。
您可以在此处下载Nuget发行版:https://dist.nuget.org/index.html
答案 3 :(得分:0)
解决方案顶部应该有一个.NuGet文件夹。 TFS将使用此文件夹中的nuget.exe进行包还原操作。
您现在应该能够对构建进行排队并使其成功恢复包。