TFS Build Agent 在 Nuget Restore 上失败:.Net Core + VS 2017 + private TFS Feed

TFS Build Agent failed on Nuget Restore for: .Net Core + VS 2017 + private TFS Feed

我有:一个 .NET Core 应用程序,针对 VS 2017 进行了修改并使用了 TFS Feed。 当它在 VS 2015 时,NuGet restore 工作正常。 现在使用 VS 2017NuGet restore 它无法返回 Failed to load msbuild Toolset ... Could not load file or assembly 'Microsoft.Build, Version=14.0.0.0

我也尝试使用 dotnet restore,我得到了 401 (Unauthorized) 回复。

显然 NuGet restore 是首选方式,因为它会自动为我们进行身份验证,以便使用 TFS Feed,但它似乎无法识别 VS 2017。

2017 年 3 月 20 日更新

抱歉造成混淆,我忘了说问题是使用 CI/CD Visual Studio Team Services / Build。在我的电脑上,它工作正常,因为我有 NuGet 4(它与 VS 2017 一起提供)......但是在线可用的 NuGet 版本(可以访问私人提要)是:3.3 和 3.5

2017 年 3 月 25 日更新

按照@Cece-MSFT 的建议将 nuget 4.0 添加到构建中后,我仍然收到错误,但没有太多细节。看截图:

我试过TFS 2017 + VS 2017 + Nuget 4.0.0.2323,在VS的Package Source中添加TFS feed后,VS可以成功恢复。

您可以将您的环境与我的环境进行比较,尤其是 Nuget 版本,因为有人与以前的 Nuget 版本有类似的问题,检查:https://github.com/NuGet/Home/issues/3975

============================================= ============================

添加截图:

我尝试了@Cece-MSFT 的一些建议,但无法让这些建议正常工作。这对我有用。我必须将 nuget.exe 的 4.0.* 版本签入版本控制。我添加了一个命令行实用程序并执行了我的签入 nuget.exe 并且一切正常。

注意:这也适用于 .net 核心和 asp.net 框架 class 库的混合。这是 github 上的 issue 报道。

注意 2:我在我的解决方案中为我的所有 .net 核心项目使用 .csproj 版本(VS 2017,无 project.json)。

这是我的 nuget 恢复构建步骤的屏幕。希望这对某人有所帮助。

我通过删除 nuget 恢复步骤并在 msbuild 参数上添加 /t:restore 来解决这个问题。通过这样做,您不需要手动升级 nuget。

我已通过确保在构建中使用以下设置来解决此问题:

  • 代理已托管但托管 VS2017
  • Nuget 恢复任务是 v3.5
  • 构建任务指定VS2017

不知道你为什么需要这个特定的组合哈哈!

抱歉,刚刚意识到您正在构建 CORE 应用程序。为此,恢复很好,然后构建无法扩展包。我想更近了一步!

最后,一些升级,有2个选项,如何解决:

  1. 不再使用 NuGet v3.3 和 v3.5...现在支持 NuGet v4.0

  1. 我最喜欢的是使用 NuGet Restore 版本 v1.*,现在我可以选择 select 我自己的 VSTS Feed... 所以我不再需要 NuGet.config 文件。

您可以使用位于 %APPDATA%\NuGet\NuGet.Config

中的构建服务器的 nuget 全局配置文件

我有一个不同的原因,在 VSTS/Azure DevOps 中首先使用 "Use Nuget" 然后 "NuGet restore" 其次,在托管代理上......恢复抛出这个错误。

我不得不改变这个...

Path to solution, packages.config, or project.json: **/*.sln

对此...

Path to solution, packages.config, or project.json: **\{YOUR_SOLUTION_NAME}.sln

错误消失了。

希望对您有所帮助!