Visual Studio 2013 NuGet包管理无法正常工作

时间:2014-05-01 20:16:29

标签: visual-studio-2013 nuget

过去几周我一直有这个奇怪的问题。使用Visual Studio 2013 Premium Ed运行Windows 8。更新1. Visual Studio中的NuGet包管理器根本不起作用。我已经卸载/重新安装了它。我已经更新了我的本地NuGet.exe(运行2.5,现在是2.8.5) - 确保包含作为路径变量。即使从控制台,我也无法安装或更新任何软件包。控制台已确认运行2.8.50313.46。

从经理那里,它只是循环显示进度条,反复显示"检索信息.."。更新或在线没有显示任何内容。从已安装的软件包中,我可以毫无问题地查看解决方案中的所有内容。

enter image description here

以此post为管理员运行建议VS 2013 Express也不起作用。另一个post发现这是一个nuget.org问题,但在我的情况下,我的同事可以从包管理器(同一网络)中访问nuget.org而没有任何问题。编辑:我还在我的解决方案中删除了suo文件,然后在Visual Studio上打开它。

有关如何解决此问题的任何想法?

10 个答案:

答案 0 :(得分:36)

我有同样的问题。卸载NuGet,重启VS2013,再安装NuGet再次为我工作。

您可以在VS中执行此操作,转到工具 - >扩展和更新。

答案 1 :(得分:14)

似乎nuget.org删除了对默认TLS版本(1.1)的支持。

在NuGet命令控件(PM)中运行此命令以使用1.2版:

[Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol-bOR [Net.SecurityProtocolType]::Tls12

但是,这似乎是一个非永久性的解决方案,因此在重新启动Visual Studio之后,您需要再次运行命令。太糟糕了。

如果/找到永久解决方案,请通知!

答案 2 :(得分:5)

我已经尝试了其他与我有关的建议(例如,重新安装包管理器),但这些都没有用。奇怪的是,只需删除(取消选中)Nuget Package Manager的所有包源(工具 - >选项 - > Nuget包管理器 - >包源),单击确定,然后重新添加它们就可以解决问题。

答案 3 :(得分:2)

我遇到了同样的问题,它与我公司防火墙背后的代理设置有关。

你可以找到文件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

答案 4 :(得分:1)

我有同样的经历,而我的原因是我当时正在运行一个http调试器(fiddler)。我杀死了小提琴手并重新启动了Visual Studio,但它确实有效。

答案 5 :(得分:1)

请查看NuGet Behind Proxy

简而言之,你应该把

if(cacheDir.isDirectory()){
        File[] files=cacheDir.listFiles();

        for(File file:files){
            if(null != file){


                long lastModified = file.lastModified();

                if (0 < lastModified) {
                    Date lastMDate = new Date(lastModified);
                    Date today = new Date(System.currentTimeMillis());

                    if (null != lastMDate && null != today) {
                        long diff = today.getTime() - lastMDate.getTime();
                        long diffDays = diff / (24 * 60 * 60 * 1000);
                        if (15 < diffDays) {
                            file.delete();
                        }
                    }
                }

            }
        }
    }
可以在<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> 找到{p>到NuGet.config(或当前.nuget dir,请参阅http://skolima.blogspot.ru/2012/07/nuget-proxy-settings.html)。

这可以通过运行以下命令来完成:

c:\Users\<your name>\AppData\Roaming\NuGet\

反对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

实际上只应通过命令设置密码,其他参数可以放入文件中。你也可以省略passw,然后nuget会在需要的时候问你。

答案 6 :(得分:1)

我遇到了同样的问题。打开“包管理器控制台”(查看-> 其他 Windows-> 包管理器控制台)对我有用。

答案 7 :(得分:0)

当我向2013年添加NuGet v3自定义存储库URL时(我想使用v2),这发生在我身上。

一旦我将其配置为使用v2 URL,我就很高兴。

答案 8 :(得分:0)

我遇到了同样的问题,我找到了解决问题的解决方案。如果未指定Windows http代理,则Nuget使用环境变量 http_proxy

如果您想了解代理设置,请以管理员身份打开提示并点击此命令:

netsh winhttp show proxy

来源:Show proxy setting

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

  2. 找到http_proxy并将其删除。

  3. 打开Visual Studio和工具 - &gt; NuGet包管理器 - &gt; NuGet Package Manager解决方案......

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

  5. 来源帖子:Unable to load the service index for source (bad proxy settings)

答案 9 :(得分:0)

就我而言,我在nuget.org上有一些其他的NuGet包源,我刚刚删除了nuget.org。通过单击左下角的设置并取消选中除nuget.org之外的所有设置,现在它正常工作。