【问题标题】:Visual Studio 2013 NuGet package management not workingVisual Studio 2013 NuGet 包管理不起作用
【发布时间】: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 日志

标签: visual-studio-2013 nuget


【解决方案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 会在加载时自动检查我的解决方案中的每个项目并添加 true。谢谢!
  • 这对我也有用,因为人们不知道如何卸载 nuget,请转到工具 -> 扩展和更新,你会在那里找到它
  • 如何重新安装 NuGet?有什么建议吗?
  • 这对我不起作用。 stackoverflow.com/a/63574949/4100001 做到了。
【解决方案3】:

我已经尝试过与我相关的其他建议(例如重新安装包管理器),但这些都不起作用。奇怪的是,只需删除(取消选中)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\&lt;your name&gt;\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\&lt;your name&gt;\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

              1. 控制面板 -> 高级系统设置 -> 环境变量

              2. 找到http_proxy并删除。

              3. 打开 Visual Studio 和 TOOLS -> NuGet Packages Manager -> NuGet Package Manager for solution...

              4. 选择左侧的在线,最终会看到在线列表。

              来源贴: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 将开始工作

                  【讨论】:

                    猜你喜欢
                    • 2023-04-03
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2023-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多