由于构建服务器上的 NuGet 版本无效,MSBuild 失败

MSBuild fails due to invalid NuGet version on build server

我这周更新到 VS2015,同时更新了我网站解决方案中的所有 NuGet 包。

站点在本地构建并且 运行 正常,但是当我对我的构建服务器进行门控检查时,构建失败时我得到以下信息

如您所见,程序包抱怨 NuGet 版本,但我不确定如何在构建服务器上更新 NuGet 版本。我确实拥有服务器的管理员权限,但是遵循 http://blog.stangroome.com/2014/02/04/update-nuget-exe-version-used-by-team-build-2013-package-restore/ 中描述的公会并没有帮助。首先,我的文件夹实际上 C:\Program Files\Microsoft Team Foundation Server 11.0\Tools 与指南中描述的 C:\Program Files\Microsoft Team Foundation Server 12.0\Tools 不同,但另外我在文件夹中没有 NuGet.exe。

我已经对 NuGet.exe 进行了完整的硬盘搜索,但是除了与项目源代码 (.nuget\NuGet.exe 直接相关的目录之外,在任何目录中都找不到它。 ).

我已经在服务器上打开 visual studio 并在 "Extension and Updates" 内更新了 NuGet 版本,希望这能解决问题,不幸的是它没有。

关于如何修复屏幕截图中显示的 issue/errors 的任何想法?

问题是您使用的是旧式、自 NuGet 2.7 以来已弃用的样式 "package restore",它基于修改您的 CSProj 文件以包含对 NuGet.targets 文件的引用,并且NuGet.exe 的副本被放入 .nuget 文件夹并最终受源代码控制。

基本上,构建服务器上的 nuget.exe 版本现在无关紧要——您的 CSProj 文件指向 .nuget 文件夹中的文件。

TFS 2013 及更高版本支持自动包还原,无需使用 NuGet.targets 方法。您可以很容易地从它迁移:https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore