代理背后的NuGet

时间:2012-02-10 17:34:35

标签: c# msbuild nuget

我发现NuGet允许自1.4版以来的代理设置配置。但是,我找不到任何命令行示例。

我正在尝试运行一些构建,而NuGet无法连接。

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

13 个答案:

答案 0 :(得分:172)

以下是我使用NTLM身份验证的公司代理所做的工作。我下载了 NuGet.exe ,然后运行了以下命令(我在CodePlex的this discussion评论中找到了这些命令):

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 ):< / p>

<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密钥,或者从事后删除它配置文件,并且仍然可以在代理中使用NuGet功能。

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

答案 1 :(得分:20)

也许您可以尝试使用 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 tracker

找到的

还有关于NuGet +网络问题的其他有价值的评论。

答案 2 :(得分:9)

如果您使用的是https版本的nuget(https://www.nuget.org),请注意您必须使用https设置值。

  • https_proxy
  • https_proxy.user
  • https_proxy.password

答案 3 :(得分:7)

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

如果发现您需要登录,则会打开一个对话框并要求您这样做(登录即可)。

请参阅此处的说明 - &gt; http://docs.nuget.org/docs/release-notes/nuget-1.5

答案 4 :(得分:4)

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

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

答案 5 :(得分:2)

也许这有助于其他人。对我来说,解决方案是在Visual Studio(2015/2017)上打开NuGet设置并添加新的供稿网址:http://www.nuget.org/api/v2/

我没有必要更改任何与代理相关的设置。

答案 6 :(得分:1)

相同“nuget代理”的另一种风格:或者您可以设置您的nuget代理设置以通过fiddler进行连接。 cmd下方会将代理设置保存在默认的nuget配置文件中,用户位于%APPDATA%\ NuGet \ NuGet.Config

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

每当你需要nuget接触互联网时,只需打开Fiddler,asumming你有小提琴听默认端口8888。

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

答案 7 :(得分:1)

只是一小部分......

如果您只提供http_proxy设置而不是用户名和密码,我建议将代理设置放在项目本地nuget.config文件中,并将其提交给源代码管理。这样所有团队成员都可以获得相同的设置。

创建一个空的。\ 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文件。

答案 8 :(得分:1)

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

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

答案 9 :(得分:0)

试试this。基本上,如果您的系统不信任nuget证书,连接可能会失败。

答案 10 :(得分:0)

除了@arcain的建议外,我还必须将以下Windows Azure Content Delivery网址添加到我们的代理服务器的白名单中:

.msecnd.net

答案 11 :(得分:0)

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

  1. 修改Nuget包管理器设置下的“包源”以进行检查 使用nuget.org设置的复选框解决了我的问题。

  2. 我也改为使用它(nuget.org)作为包源的第一选择 我取消了我的公司包源,以确保总是挑选nuget 来自全球的消息来源。

答案 12 :(得分:0)

我的解决方案是包括

<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文件中。