NuGet在代理之后
我发现NuGet自1.4版本开始允许代理设置configuration。 但是,我找不到任何命令行的例子。
我试图运行一些构build和NuGet无法连接。
如何在命令行中configuration代理设置?
以下是我所做的与使用NTLM身份validation的公司代理一起工作的方法。 我下载了NuGet.exe ,然后运行下面的命令(我在CodePlex上对这个讨论的评论中find了这些命令):
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:\ Users \ myUserName \ AppData \ Roaming)的NuGet.config中 :
<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只工作在Visual Studio中第一次打包的源代码。
请注意,一些尝试过这种方法的人已经通过注释报告,他们已经能够省略从命令行设置
http_proxy.password
密钥,或从configuration文件中事后删除它,仍然能够在代理上有NuGetfunction。
但是,如果您发现必须在NuGetconfiguration文件中指定密码, 请记住,如果您的代理凭证也是您的networking,则必须在更改networkinglogin时从命令行更新NuGetconfiguration中存储的密码证书 。
也许你可以试试这个到你的devenv.exe.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跟踪器中find它
还有关于NuGet +networking问题的其他宝贵意见。
如果您使用https版本的nuget( https://www.nuget.org ),请注意您必须使用https设置值。
- https_proxy
- https_proxy.user
- https_proxy.password
我可能是错的,但我认为它使用IE的代理设置。
如果它看到你需要login,它会打开一个对话框,并要求你这样做(login是)。
请看这里的描述 – > http://docs.nuget.org/docs/release-notes/nuget-1.5
对于任何使用VS2015的人:我遇到了“407代理身份validation要求”的错误,这打破了我的构build。 经过几个小时的调查,事实certificate,当试图下载Nuget作为“DownloadNuGet”目标的一部分时,MSBuild没有发送证书。 解决scheme是将以下XML添加到<configuration>
元素内的C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config:
<system.net> <defaultProxy useDefaultCredentials="true"> </defaultProxy> </system.net>
也许这有助于别人。 对我来说,解决scheme是在Visual Studio(2015/2017)上打开NuGet设置,并添加一个新的提要URL: http : //www.nuget.org/api/v2/ 。
我不必更改任何代理相关的设置。
同样的“代理nuget”的另一个味道:或者你可以设置你的nuget proxing设置通过提琴手连接。 在cmd下面将保存在%APPDATA%\ NuGet \ NuGet.Config用户的默认nugetconfiguration文件中的代理设置
nuget config – 设置HTTP_PROXY = http://127.0.0.1:8888
每当你需要nuget来接触互联网时,只需打开Fiddler,你就可以在默认的8888端口上听到提琴手的声音。
此configuration对passwork更改不敏感,因为fiddler将为您parsing使用上游代理的任何validation。
只是一小部分…
如果它只为您提供http_proxy设置,而不是用户名和密码,我build议将代理设置放在项目本地nuget.config文件中,并将其提交给源代码pipe理。 这样所有的团队成员都可以得到相同的设置。
创build一个空的\ 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文件。
试试这个 。 基本上,如果你的系统不信任nuget证书,连接可能会失败。
除了@arcain的build议之外,我不得不将下面的Windows Azure Content Delivery Network url添加到我们的代理服务器的白名单中:
.msecnd.net
以上解决scheme@arcain加上下面的步骤解决了我的问题
-
修改Nuget包pipe理器设置下的“包源代码”以选中checkbox以使用nuget.org设置解决了我的问题。
-
我也改变了使用(nuget.org)作为包源的第一select
我没有检查我的公司包来源,以确保nuget总是从全球来源。
我的解决scheme是包括
<add key="http_proxy" value="http://<IP>:<Port>" /> <add key="http_proxy.user" value="<user>" /> <add key="http_proxy.password" value="<password>" />
在nuget.config
文件中。