Visual Studio 2013 NuGet 包管理不起作用
Posted
技术标签:
【中文标题】Visual Studio 2013 NuGet 包管理不起作用【英文标题】:Visual Studio 2013 NuGet package management not working 【发布时间】:2014-06-18 09:53:48 【问题描述】:过去几周我遇到了奇怪的问题。使用 Visual Studio 2013 Premium Ed 运行 Windows 8。使用更新 1。Visual Studio 中的 NuGet 包管理器根本不起作用。我已经卸载/重新安装了它。我已经更新了我的本地 NuGet.exe(运行的是 2.5,现在是 2.8.5)——确保包含为路径变量。即使从控制台,我也无法安装或更新任何软件包。确认控制台运行 2.8.50313.46。
从管理器中,它只是循环重复显示“正在检索信息..”的进度条。更新或在线不显示任何内容。从已安装的软件包中,我可以毫无问题地看到我的解决方案中的所有内容。
post 建议以管理员身份运行 VS 2013 Express 也不起作用。另一个post 发现这是一个 nuget.org 问题,但在我的情况下,我的同事可以从包管理器(同一网络)中访问 nuget.org,没有任何问题。编辑:在 Visual Studio 上打开它之前,我还从我的解决方案中删除了 suo 文件。
关于如何解决这个问题的任何想法?
【问题讨论】:
检查 VS2013 日志是解决方案的其中一个步骤,另一个步骤是检查扩展和更新窗口,看看 nuget 是否需要更新 我看到您那里还有其他几个 Nuget 包源。我注意到包管理器会等到它拥有来自所有包源的数据后才可用。是否有可能其他来源之一需要很长时间才能加载? 好点。我会尝试它们并报告。 禁用了其他包源(nuget.org 只是一个活动的)。不用找了。将检查 VS2013 日志 nuget.codeplex.com/workitem/3819 【参考方案1】:好像 nuget.org 删除了对默认 TLS 版本 (1.1) 的支持。
在 NuGet 命令控制 (PM) 中运行此命令以使用 1.2 版:
[Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol-bOR [Net.SecurityProtocolType]::Tls12
但是,这似乎是一个非永久性的解决方案,因此在重新启动 Visual Studio 后,您需要再次运行命令。太糟糕了。
如果/当您找到永久解决方案时请通知!
【讨论】:
是的,这是唯一对我有用的解决方案。经过进一步研究,很明显,主要原因是使用的 TLS 版本——2020 年所有主要浏览器都弃用了 TLS 1.0 和 TLS 1.1,并且 nuget.org 服务器正在将所有 http 访问重定向到 https 并且需要 TLS 1.2 协议(应该如此)。因此解决方案是确保您在注册表中启用了 TLS 1.2,并可能禁用 TLS 1.0 和 TLS 1.1 协议。查看 microsoft.com 上的支持页面,了解有关启用 TLS 1.2 的注册表设置的信息——要添加/更改的值相当多…… 例如关于在 Windows 注册表中启用 TLS 1.2 协议的一项资源:support.microsoft.com/en-us/help/3140245/… @PåhlMelin,Tack Påhl!【参考方案2】:我遇到了同样的问题。卸载 NuGet,重新启动 VS2013,然后再次安装 NuGet 对我有用。
您可以在 VS 中通过转到工具 -> 扩展和更新来执行此操作。
【讨论】:
我知道这不是问题的“解决方案”,但卸载和重新安装 nuget 只需几秒钟。对我来说,VS nuget 管理器现在再次完美运行。谢谢克里斯托弗。 这可能不是某些人的解决方案,但它是我的! Nuget 会在加载时自动检查我的解决方案中的每个项目并添加我已经尝试过与我相关的其他建议(例如重新安装包管理器),但这些都不起作用。奇怪的是,只需删除(取消选中)Nuget 包管理器的所有包源(工具 -> 选项 -> Nuget 包管理器 -> 包源),单击确定,然后重新添加它们即可解决问题。
对我来说,在添加新的 nuget 包管理器时,我添加了以下内容: https://www.nuget.org/api/v2/
【讨论】:
【参考方案4】:我遇到了同样的问题,这与我公司防火墙后面的代理设置有关。
您可以找到文件 C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe.config
VS 更新 4 似乎删除了它们,不知道为什么。 更多细节在这里:Visual Studio 2013 Update 4 - Tools and Extensions Not reaching the internet
【讨论】:
我希望我早点看到这个。如果这行得通,我不会感到惊讶。不幸的是,我已经重建了我的笔记本电脑,所以它不再是一个问题,但代理问题可以解释我遇到的问题。 :) +1【参考方案5】:我有同样的经历,我的经历是因为我当时正在运行一个 http 调试器(fiddler)。我杀死了提琴手并重新启动了 Visual Studio,它工作了。
【讨论】:
【参考方案6】:请看NuGet Behind Proxy。
你应该说几句话
<configuration>
<config>
<add key="http_proxy" value="http://my.proxy.address:port" />
<add key="http_proxy.user" value="mydomain\myUserName" />
<add key="http_proxy.password" value="base64encodedHopefullyEncryptedPassword" />
</config>
</configuration>
到NuGet.config
可以在c:\Users\<your name>\AppData\Roaming\NuGet\
找到(或当前的.nuget 目录,请参阅http://skolima.blogspot.ru/2012/07/nuget-proxy-settings.html)。
这可以通过运行以下命令来完成:
nuget.exe config -set http_proxy=http://my.proxy.address:port
nuget.exe config -set http_proxy.user=mydomain\myUserName
nuget.exe config -set http_proxy.password=mySuperSecretPassword
反对c:\Users\<your name>\AppData\Roaming\NuGet\NuGet.exe
实际上只需要通过命令设置密码,其他参数直接写入文件即可。你也可以省略 passw,然后 nuget 会在需要时询问你。
【讨论】:
【参考方案7】:我遇到了同样的问题。打开“包管理器控制台”(查看->其他 Windows->包管理器控制台)对我有用。
【讨论】:
【参考方案8】:如“在 NuGet.org 上弃用 TLS 1.0 和 1.1”页面所述。
https://devblogs.microsoft.com/nuget/deprecating-tls-1-0-and-1-1-on-nuget-org/
我已将以下 2 个条目添加到注册表中,并且 nuget 包管理器再次开始工作:
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
【讨论】:
【参考方案9】:当我将 NuGet v3 自定义存储库 URL 添加到 2013(我猜它使用 v2)时,这发生在我身上。
一旦我将它配置为使用 v2 URL,我就可以开始了。
【讨论】:
【参考方案10】:我遇到了同样的问题,我找到了解决问题的解决方案。如果未指定 Windows http 代理,则 Nuget 使用环境变量 http_proxy。
如果您想知道您的代理设置,请以管理员身份打开提示并点击以下命令:
netsh winhttp show proxy
来源:Show proxy setting
控制面板 -> 高级系统设置 -> 环境变量
找到http_proxy并删除。
打开 Visual Studio 和 TOOLS -> NuGet Packages Manager -> NuGet Package Manager for solution...
选择左侧的在线,最终会看到在线列表。
来源贴:Unable to load the service index for source (bad proxy settings)
【讨论】:
【参考方案11】:在我的例子中,我在 nuget.org 那里有几个其他 NuGet 包源,我刚刚删除了 nuget.org 以外的其他 NuGet 包源。通过单击左下角的设置并取消选中除 nuget.org 之外的所有内容,现在它工作正常。
【讨论】:
【参考方案12】:https://devblogs.microsoft.com/nuget/deprecating-tls-1-0-and-1-1-on-nuget-org/
在 Windows 10 中以管理员身份打开命令提示符
运行以下命令
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
Nuget 将开始工作
【讨论】:
以上是关于Visual Studio 2013 NuGet 包管理不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 2013 中链接 NuGet 库
Visual Studio 2013 NuGet 包管理不起作用
Nuget PM Visual Studio Express v2013 中的错误
有没有办法在离线机器上更新 Visual Studio 2013 中的 nuget?