代理背后的NuGet

Ric*_*rdo 93 c# msbuild nuget

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

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

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

arc*_*ain 185

以下是我使用NTLM身份验证的公司代理所做的工作.我下载了NuGet.exe,然后运行了以下命令(我在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
Run Code Online (Sandbox Code Playgroud)

这将以下内容放在我的NuGet.config位置%appdata%\NuGet(在我的Windows 7机器上映射到C:\ Users\myUserName\AppData\Roaming):

<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>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这也解决了我的问题,NuGet只在我第一次点击Visual Studio中的包源时工作.

请注意,尝试过这种方法的一些人已通过评论报告他们已经能够省略http_proxy.password从命令行设置密钥,或者从配置文件中删除它后仍然能够具有NuGet功能跨代理.

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

  • 在我的情况下,我完全省略了**http_proxy.password**密钥,它似乎很高兴通过我的身份验证的AD凭据.这节省了经常更改密码的需要. (18认同)
  • **警告**使用arcain建议的配置时要小心.更改Windows密码时,请确保更改配置文件中的密码.根据公司政策更改密码后,我的Windows帐户被随机锁定.我花了几个小时才发现它的配置条目导致了整个问题.最好的选择是简单地删除@Sir Crispalot建议的**http_proxy.password**密钥 (5认同)
  • 谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢, 谢谢.... (4认同)
  • 这里的另一个胜利 - 使用这些设置并省略密码密钥在我的公司代理后面使用NTLM身份验证. (4认同)
  • 试试Sir Crispalot提到的内容并删除http_proxy.password键.这对某些人有用,并允许他们避免在NuGet配置文件中更改密码. (3认同)
  • 正如答案中提到的,它在没有密码的情况下对我有用。谢谢阿卡恩! (2认同)
  • 它无需用户名和密码即可工作,如果打开了 VS,则需要重新启动 :) (2认同)

Tx3*_*Tx3 22

也许你可以尝试这个你的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>
Run Code Online (Sandbox Code Playgroud)

我是从NuGet Issue跟踪器中找到的

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

  • 但这假定安装了devenve.exe(即Visual Studio),它不应该在构建服务器中 (2认同)

Rom*_*rer 10

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

  • https_proxy
  • https_proxy.user
  • https_proxy.password

  • 如果您遵循 arcains 指南但使用 https,则 https 密码在 nuget.config 中为纯文本 (2认同)

Dav*_*ean 7

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

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

请在此处查看此处的说明 - > http://docs.nuget.org/docs/release-notes/nuget-1.5

  • 确实如此 - 当您公司的组策略不断将您的 IE 设置恢复为不适用于 Nuget 的设置时,就会出现这种方法的问题,就像在我工作的地方发生的那样 (2认同)

小智 6

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

nuget config -Set HTTP_PROXY=http://127.0.0.1:8888
Run Code Online (Sandbox Code Playgroud)

每当您需要 nuget 访问互联网时,只需打开 Fiddler,假设您让 Fiddler 监听默认端口 8888。

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


r59*_*590 5

对于使用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>
Run Code Online (Sandbox Code Playgroud)


小智 5

我的解决方案是包括

<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>
Run Code Online (Sandbox Code Playgroud)

nuget.config文件中。

  • Windows 10 上用户的 nuget.config 位置:%AppData%\Roaming\Nuget\NuGet.config (3认同)
  • 我在哪里可以找到这个文件? (2认同)
  • @MarceloMachado:这里:%AppData%\NuGet\NuGet.config (2认同)
  • 您可以选择单独执行 ` &lt;add key="http_proxy" value="http://&lt;IP&gt;:&lt;Port&gt;" /&gt;` 而不指定用户名和密码。之后记得重新启动 Visual Studio! (2认同)