使用旧版本 NuGet.exe 的 TFS 本地构建代理

TFS On-Prem Build Agent Using Old Version Of NuGet.exe

我们在本地托管 TFS 2017 Update 2,并使用本地构建代理。 NuGet.exe 的最新版本目前是 4.3.0,但我们的构建代理始终默认使用 v4.0.0。我怎样才能让我们的构建代理使用最新版本的 NuGet.exe?

我们需要更新,因为 NuGet restore 在使用 v4.0.0 时失败,但适用于 v4.3.0,因为我们正在处理新的 .Net Standard 2.0 包。在我们的构建服务器上,我能够 NuGet.exe update -selfC:\Builds\_work\_tool\NuGet.0.0\x64\nuget.exe 中的 NuGet.exe 从 4.0.0 更新到 4.3.0,但是 C:\Builds\_work\_tool 目录经常被删除并重新创建,所以这不是一个持久的解决方法。

如何让我们的构建代理始终使用最新版本的 NuGet.exe,或者至少使用 v4.3.0?

我知道你不应该用 link 来回答,但是这个 post 提供了你需要的所有细节,确认任务确实仍然使用 4.0.0,如何使用 VSTS 和 TFS 2018 你不必再担心这个(有一个新的 NuGet 安装程序任务)以及如何通过 PowerShell 脚本为 VS 2017.2(及更早版本)重新创建这种任务,Using the latest NuGet in your build

基于 Greg 的链接答案,但更简单一些:

  1. 在其他 NuGet 步骤之前添加一个步骤 "NuGet Tool Installer",使用“>=5.0.0”作为版本并标记 "Always download the latest matching version",这应该 - 很好 - 为您提供最新的稳定版本
  2. 替换现有的"NuGet Installer"步-这似乎是默认的"NuGet Restore"步,只是复制设置。它们似乎完全兼容,允许 e。 G。用于引用包配置或解决方案文件,包括模式匹配

就是这样。将需要您指定版本的 "NuGet Installer" 替换为仅使用 "NuGet Tool Installer" 中设置的路径中的 NuGet.exe 的 "NuGet Restore" 更容易。还要注意令人困惑的命名(NuGet 工具 Installer/NuGet 安装程序 - 两者相当不同)。

不得不对不太旧的 TFS 2017 基础架构进行如此多的修补是一种耻辱。