启动nuget.exe时出现未处理异常,求无VS的.NET构建服务器解决方案
解决NuGet.exe启动时的System.NotSupportedException(安全协议不支持)问题
你遇到的这个错误核心原因很明确:你的NuGet.exe尝试使用的旧版安全协议(比如TLS 1.0/1.1)已经被NuGet.org和绝大多数包源弃用,而因为你没有安装Visual Studio,系统默认的.NET Framework配置没有启用更安全的TLS 1.2/1.3协议,导致NuGet无法和包源建立连接。
下面给你几个不需要依赖Visual Studio的解决办法,按优先级推荐:
1. 升级到最新版NuGet.exe
旧版本的NuGet.exe可能硬编码了对旧安全协议的依赖,直接替换成最新版的NuGet.exe是最简单的方案——新版NuGet默认支持TLS 1.2及以上协议,不需要额外配置。
2. 修改系统注册表强制启用强加密协议
这个方法会让所有基于.NET Framework 4.x的应用默认使用TLS 1.2+,适合长期稳定的构建服务器环境:
- 按下Win+R,输入
regedit打开注册表编辑器 - 分别定位到以下路径(64位系统需要同时修改两个路径):
- 32位系统:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 - 64位系统额外添加:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
- 32位系统:
- 在每个路径下右键新建DWORD(32位)值,命名为
SchUseStrongCrypto,设置数值数据为1 - 重启你的构建服务器,让注册表修改生效
3. 临时通过环境变量启用强加密(适合快速测试)
如果不想修改注册表或重启服务器,可以在运行NuGet命令前先设置环境变量:
setx SCHANNEL_USE_STRONG_CRYPTO 1
设置完成后关闭当前命令提示符窗口,重新打开一个新窗口再运行NuGet命令,这个变量会强制.NET Framework应用使用符合要求的安全协议。
验证方法
修改完成后,运行nuget.exe list命令,如果能正常列出包源中的包,说明问题已经解决了。
内容的提问来源于stack exchange,提问作者user7384859
相关产品推荐
相关产品推荐

