NuGet 代理服务器

我发现 NuGet 从 1.4版本(2011年6月)开始就允许代理设置,但是我找不到任何命令行的例子。

I'm trying to run some build and NuGet can't connect.

如何在命令行上配置代理设置?

193509 次浏览

我可能错了,但我认为它使用了 IE 的代理设置。

如果它看到您需要登录,它会打开一个对话框,要求您这样做(即登录)。

请看这里的描述-> http://docs.nuget.org/docs/release-notes/nuget-1.5

也许你可以试试你的 Config

<system.net>
<defaultProxy useDefaultCredentials="true" enabled="true">
<proxy proxyaddress="http://proxyaddress" />
</defaultProxy>
<settings>
<servicePointManager expect100Continue="false" />
<ipv6 enabled="true"/>
</settings>
</system.net>

我在 NuGet Issue tracker上找到的

还有其他关于 NuGet + 网络问题的宝贵意见。

Try 这个. Basically, connection could fail if your system doesn't trust nuget certificate.

下面是我使用使用 NTLM 身份验证的公司代理所做的工作。我下载了 翻译: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇芳校对: 奇,然后运行以下命令(我在 CodePlex 上对 这个讨论的注释中找到了这些命令) :

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

这使得我的 NuGet.config位于 %appdata%\NuGet(在我的 Windows 7机器上映射到 C: 用户 myUserName AppData 漫游) :

<configuration>
<!-- stuff -->
<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>
<!-- stuff -->
</configuration>

顺便说一句,这也修复了我的问题,即 NuGet 只在我第一次在 VisualStudio 中访问包源代码时才能工作。

请注意,一些尝试过这种方法的人通过评论报告说,他们能够忽略命令行中设置 http_proxy.password键,或者事后从配置文件中删除它,并且仍然能够通过代理使 NuGet 功能。

但是,如果您发现 必须的在 NuGet 配置文件 请记住,如果您的代理凭据也是您的网络凭据,那么当您更改网络登录名时,必须从命令行更新 NuGet 配置中存储的密码中指定了您的密码。

以防您使用的是 HTTPS 版本的 NuGet,请注意必须使用 HTTPS 设置值。

  • https_proxy
  • https_proxy.user
  • https_proxy.password

除了@arcain 的建议,我不得不在我们的代理服务器的白名单上添加下面的 Windows Azure 内容传递网路地址:

.msecnd.net

Another flavor for same "proxy for nuget": alternatively you can set your nuget proxing settings to connect through 小提琴手. Below cmd will save proxy settings in in default nuget config file for user at %APPDATA%\NuGet\NuGet.Config

nuget config -Set HTTP_PROXY=http://127.0.0.1:8888

无论何时你需要 nuget 来连接互联网,只要打开 Fiddler,假设你有 Fiddler 监听默认端口8888。

此配置对密码更改不敏感,因为 fiddler 将为您解决任何使用上游代理的身份验证。

Just a small addition...

If it works for you to only supply the http_proxy setting and not username and password I'd recommend putting the proxy settings in a project local nuget.config file and commit it to source control. That way all team members get the same settings.

创建一个空的. nuget.config

   <?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>

然后:

   nuget config -Set http_proxy="http://myproxy.example.com:8080" -ConfigFile .\Nuget.Config

最后提交新的项目本地 Nuget.config 文件。

对于任何使用 VS2015的人: 我遇到了一个“需要407代理身份验证”的错误,这破坏了我的构建。经过几个小时的调查,发现 MSBuild 在尝试下载 Nuget 作为“ DownloadNuGet”目标的一部分时没有发送凭证。解决方案是将以下 XML 添加到 <configuration>元素中的 C: Program Files (x86) MSBuild 14.0 Bin MSBuild.exe.config:

<system.net>
<defaultProxy useDefaultCredentials="true">
</defaultProxy>
</system.net>

以上解决方案由@arcain Plus 通过以下步骤解决了我的问题

  1. Modifying the "package sources" under Nuget package manger settings to check 使用 nuget.org 设置的复选框解决了我的问题

  2. 我还更改了使用(nuget.org)作为软件包源代码的第一选择
    我没有检查我的公司包装来源,以确保总是挑选的核心 来自全球的消息

对我来说,解决办法就是

<configuration>
<config>
<add key="http_proxy" value="http://<IP>:<Port>" />
<add key="http_proxy.user" value="<user>" />
<add key="http_proxy.password" value="<password>" />
</config>
</configuration>

nuget.config文件中。

也许这能帮到别人。对我来说,解决方案是在 Visual Studio (2015/2017)上打开 NuGet 设置,并添加一个新的提要 URL: http://www.nuget.org/api/v2/

我不需要改变任何与代理相关的设置。

在我开发的 Windows Server 2016 Standard 上,我只需要打开凭证管理器控制面板,清除 Visual Studio 的缓存代理设置,这些设置不再有效,然后重新启动 Visual Studio。下一次打开 Nuget Package Manager 时,系统提示我输入代理凭证,这让我重新开始工作。

见: https://support.microsoft.com/en-us/help/4026814/windows-accessing-credential-manager

作为一个迟到的回答,对我来说,这里什么都不管用。我想这可能取决于您的公司代理或者 nuget是如何实现的,但是由于某种原因,我设置了以下环境变量: http_proxyhttps_proxy。在我删除它们之后,nuget开始正常工作。

Hello for me going into

% appdata%/Roaming/NuGet/NuGet. Config 并删除除包源之外的每一行

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>

完整路径应该是 C: Users < username > AppData Roaming NuGetNuGet.Config

基本上有一个代理设置,我不知道如何和为什么它被设置,但它在那里,我无法定位它。

它是相关的,但这里的情况不一样,但我想为 Linux 上的那些文档。

我在 Fedora 35使用 VsCode 和 dotnet sdk 6安装

要在代理后面使用 dotnet add package,我必须使用以下格式的命令:

export http_proxy=http://[user]:[pass]@[server]:[port] && dotnet add package <package>