首页 > 解决方案 > 在 Jenkins 下运行 msbuild /t:restore 以恢复 nuget 包时出错

问题描述

我们在构建过程中得到的错误是:

Unable to load the service index for source https://api.nuget.org/v3/index.json.
An error occurred while sending the request.
The underlying connection was closed: An unexpected error occurred on a send.
Authentication failed because the remote party has closed the transport stream.

如果我远程进入构建机器并从源代码控制中提取源代码,我可以构建并让 VS 恢复 nuget 包而不会出现问题。

我也可以在机器上的浏览器中打开https://api.nuget.org/v3/index.json,所以我不认为这是网络/防火墙问题。

注意 Jenkins 在 SYSTEM LOCAL 下运行

标签: jenkinsmsbuildnugetnuget-package-restore

解决方案


该问题似乎与禁用 TLS 1.2 的 Win7 有关。在机器上运行它并且错误停止了:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v DisabledByDefault /t REG_DWORD /d 0 /f /reg:64
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:32
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f /reg:64

请注意,我认为您需要同时添加到 32 位和 64 位注册表,因为 msbuild 可能会根据构建在任何一个中运行


推荐阅读