【问题标题】:TFS On-Prem Build Agent Using Old Version Of NuGet.exe使用旧版本 NuGet.exe 的 TFS On-Prem 构建代理
【发布时间】:2018-03-18 18:29:47
【问题描述】:

我们在本地托管 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 -self 将在C:\Builds\_work\_tool\NuGet\4.0.0\x64\nuget.exe 找到的 NuGet.exe 从 4.0.0 更新到 4.3.0,但是 C:\Builds\_work\_tool 目录经常被删除和重新创建,所以这不是持久的解决方法。

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

【问题讨论】:

    标签: tfs nuget azure-devops nuget-package-restore azure-devops-self-hosted-agent


    【解决方案1】:

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

    【讨论】:

    • 谢谢格雷格。我曾考虑将 v4.3.0 NuGet.exe 添加到我们的存储库并以这种方式进行,但在构建时动态下载它似乎更干净,不会弄乱存储库,因为这应该是 TFS 2018 / VSTS 之前的临时修复。如果由于网络问题导致构建开始失败,我们可能会将 NuGet.exe 移动到我们构建服务器上的硬编码位置,因为这样我们就不必总是下载它并且它不会弄乱存储库。谢谢!
    【解决方案2】:

    基于 Greg 的链接答案,但稍微简单一点:

    1. 在其他 NuGet 步骤之前添加一个步骤“NuGet Tool Installer”,使用“>=5.0.0”作为版本并标记“始终下载最新的匹配版本”,这应该 - 好吧 - 为您提供最新的稳定版本
    2. 替换现有的“NuGet 安装程序”步骤 - 这似乎是“NuGet 还原”步骤的默认设置,只需复制设置即可。它们似乎完全兼容,允许 e。 G。用于引用包配置或解决方案文件,包括模式匹配

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

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

    【讨论】:

    • 这很可能与 nuget 版本 3.3 不支持在 6 月 15 日开始实施的新 TLS 版本有关。
    猜你喜欢
    • 2017-12-25
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多