Visual Studio中NuGet服务索引加载失败及登录异常求助
解决VS 2017 NuGet包管理器及登录Microsoft的程序集/安全规则问题
我处理过不少这类Win10更新后VS组件异常的案例,结合你的具体情况,咱们一步步来解决:
1. 修复System.Net.Http程序集绑定冲突
Win10更新很可能修改了全局程序集缓存(GAC)里的System.Net.Http版本,导致VS找不到指定的4.0.0.0版本。咱们直接给VS的配置文件添加绑定重定向:
- 找到VS安装目录下的
devenv.exe.config,路径一般是C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE - 打开文件,找到
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">节点,添加或修改以下内容:<dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" /> </dependentAssembly> - 保存后重启VS,测试NuGet浏览页是否恢复正常
2. 清理NuGet缓存并重置源
缓存损坏也可能导致源加载失败,先彻底清理:
- 打开命令提示符(管理员权限),执行命令:
nuget locals all -clear - 打开VS,依次点击「工具->NuGet包管理器->包管理器设置->包源」,点击右上角的「重置」按钮,然后确认保存
- 再次打开NuGet浏览页,等待源加载完成
3. 解决登录时的继承安全规则错误
这个错误是因为旧的.NET安全策略和System.Net.Http的新实现冲突了,咱们禁用旧安全策略即可:
- 回到刚才的
devenv.exe.config文件,找到<runtime>节点,添加以下配置:<NetFx40_LegacySecurityPolicy enabled="false" /> - 同时检查系统的
machine.config(路径一般是C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config),确保同样没有启用旧安全策略,如果有类似配置,改成enabled="false" - 重启VS后尝试登录Microsoft账号
4. 彻底验证VS组件和.NET Framework安装
为了避免问题复发,咱们再做一次彻底的组件校验:
- 运行VS安装程序,选择「修改」,确保勾选了
.NET Framework 4.7.2开发工具以及NuGet包管理器组件,点击「修改」完成安装 - 下载并运行微软官方的.NET Framework修复工具,修复.NET Framework的安装异常
预防措施
- 如果你的项目允许,建议升级VS 2017到15.9.x的最后版本(这是VS 2017的最终稳定版),后续的更新补丁修复了不少这类兼容性问题
- 尽量避免手动修改GAC里的程序集,Win10更新后可能会覆盖这些修改,导致冲突
内容的提问来源于stack exchange,提问作者user2020792
相关产品推荐
相关产品推荐

