Visual Studio 2019 更新破坏了发布功能(TLS版本不正确)

3

简短版:

如何更改Visual Studio 2019用于获取依赖项的默认TLS版本?

详细版:

截至Visual Studio 2019 v16.7.1(最新版本v16.7.2无法解决此问题),我似乎无法发布任何dotnet core项目。发布操作总是崩溃,并显示以下消息:

Publish has encountered an error.
Publish has encountered an error. We were unable to determine the cause of the error.
Check the output log for more details.

看一下输出窗口: 错误信息 可以发现,VS似乎在尝试与nuget建立TLS连接时失败了。 进一步的调查使用Wireshark进行监视发布时揭示了这一点:

wireshark failing

由于使用了不正确的TLS版本,连接失败是很明显的。Visual Studio似乎使用的是不被nuget api支持的版本。我们也可以看到VS正在重试几次,因此数据包数量很大。
通过我的Web浏览器手动连接https://api.nuget.org/v3/index.json,可以看到nuget.org实际上使用的是。

wireshark success

我的问题是:如何告诉Visual Studio使用TLSv1.2而不是TLSv1连接到nuget.org?或者这是否可能?是否有一个Windows注册表键可以做到这一点?我还没有尝试重新安装VS,但如果可能的话,我想避免这样做。

你用的是什么操作系统?有可能问题出在你的操作系统上。 - Lukasz Szczygielek
我正在运行Windows 7 Ultimate。过去从未出现过任何问题 :| - Frederik Hoeft
你可以尝试在操作系统设置中的“Internet选项”->“高级”下取消选中“使用TLS 1.0”选项吗? - imsmn
取消勾选后,重新启动,但是VS仍在使用TLS 1.0 :( - Frederik Hoeft
进行注册表更改,重新启动计算机并查看是否解决了您的问题。 - magicandre1981
@magicandre1981非常感谢 :) 是你和imsmn的方法结合起来最终为我解决了问题。但奇怪的是,TLS设置之前几周发布一直很好,现在才成为了问题。 - Frederik Hoeft
1个回答

0

正如评论中指出的那样,设置以下注册表键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
      DefaultSecureProtocols = (DWORD): 0xAA0
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
      DefaultSecureProtocols = (DWORD): 0xAA0

(更多文档在这里在这里) 在Windows 7控制面板的Internet选项 -> 高级选项下取消选中使用TLS 1.0选项,与此同时结合使用,可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接