Nuget Restore上的TFS Build Agent失败:.Net Core + VS 2017 +私有TFS Feed

时间:2017-03-17 05:01:01

标签: .net-core tfsbuild visual-studio-2017

我有:一个.NET Core App,针对VS 2017进行了修改并使用了TFS Feed。 当它在 VS 2015 时,NuGet restore工作正常。 现在使用 VS 2017 NuGet 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日更新

在我将@ nuce 4.0添加到@ Cece-MSFT建议的构建之后,我仍然收到错误但没有太多细节。看截图: enter image description here

7 个答案:

答案 0 :(得分:1)

最后,一些升级有两个选项,如何解决这个问题:

  1. 而不是使用NuGet v3.3和v3.5 ...现在支持NuGet v4.0
  2. enter image description here

    1. 我最喜欢的,这是使用NuGet Restore版本v1。*,现在我可以选择选择我自己的VSTS Feed ...所以我不需要NuGet.config文件了。
    2. enter image description here

答案 1 :(得分:1)

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

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

答案 2 :(得分: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

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

添加屏幕截图:

enter image description here

答案 3 :(得分:0)

我尝试了@ Cece-MSFT的一些建议,但无法让这些建议没有错误。这对我有用。我不得不将4.0。*版本的nuget.exe签入版本控制。我添加了一个命令行实用程序并执行了我的nuget.exe检查,一切都运行良好。

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

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

这是我的nuget restore构建步骤的屏幕。希望这有助于某人。

enter image description here

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

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

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

答案 6 :(得分:0)

我有一个不同的原因,在VSTS / Azure DevOps中,首先在托管代理上使用“使用Nuget”,然后使用“ NuGet恢复”,...恢复引发此错误。

我不得不改变这个...

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

对此...

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

错误消失了。

希望这会有所帮助!