NuGet atrás de um proxy


104

Eu descobri que o NuGet permite a configuração de configurações de proxy desde a versão 1.4. Mas, não consigo encontrar nenhum exemplo de linha de comando.

Estou tentando executar uma compilação e o NuGet não consegue se conectar.

Como faço para definir as configurações de proxy na linha de comando?


1
Para o benefício de outros usuários que encontrarem problemas de proxy: Você saberá que pode ser o proxy se o NuGet exibir a mensagem: "O nome remoto não pôde ser resolvido: 'nuget.org'"
— pduncan

4
Tenha o cuidado de verificar as variáveis ​​de ambiente http_proxye https_proxy, bem como as configurações de proxy do sistema
— Colonel Panic

Há um problema para isso agora no github: github.com/NuGet/Home/issues/458
— thekip

Respostas:


202

Veja o que fiz para fazer isso funcionar com meu proxy corporativo que usa autenticação NTLM. Eu baixei NuGet.exe e, em seguida, correu os seguintes comandos (que eu encontrei nos comentários a esta discussão no 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

Isso coloca o seguinte em meu NuGet.configlocalizado em %appdata%\NuGet(que mapeia para C: \ Users \ myUserName \ AppData \ Roaming em minha máquina Windows 7):

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

A propósito, isso também corrigiu meu problema com o NuGet funcionando apenas na primeira vez que acessei a origem do pacote no Visual Studio.

Observe que algumas pessoas que tentaram essa abordagem relataram através dos comentários que foram capazes de omitir a configuração da http_proxy.passwordchave da linha de comando ou excluí-la após o fato do arquivo de configuração e ainda eram capazes de ter a função NuGet através do proxy.

Se você achar, no entanto, que deve especificar sua senha no arquivo de configuração do NuGet, lembre-se de que você deve atualizar a senha armazenada na configuração do NuGet na linha de comando ao alterar seu login de rede, se suas credenciais de proxy também forem sua rede credenciais .


A linha de comando do NuGet não adicionou as entradas ao meu arquivo NuGet.config, mas depois que editei manualmente o arquivo, funcionou muito bem.
— pduncan

19
No meu caso, omiti a chave http_proxy.password completamente e parecia feliz em passar minhas credenciais autenticadas do AD. Isso evita a necessidade de alterar a senha com frequência.
— Sir Crispalot

5
Aviso Tenha cuidado ao usar a configuração sugerida por Arcain. Certifique-se de alterar a senha no arquivo de configuração ao alterar sua senha do Windows. Minha conta do Windows foi bloqueada aleatoriamente depois de alterar a senha de acordo com a política da empresa. Levei algumas horas para descobrir que essa entrada de configuração está causando todo o problema. A melhor opção é simplesmente remover a chave http_proxy.password sugerida por @Sir Crispalot
— AJ Qarshi

3
Experimente o que Sir Crispalot mencionou e remova a chave http_proxy.password. Isso funcionou para algumas pessoas e evitou a necessidade de alterar a senha no arquivo de configuração do NuGet.
— Arcain

4
Outra vitória aqui - usar essas configurações e omitir a chave da senha funcionou para mim por trás do meu proxy corporativo com autenticação NTLM.
— Cᴏʀʏ

22

Talvez você possa tentar fazer isso no seu 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>

Eu encontrei no rastreador de problemas NuGet

Existem também outros comentários valiosos sobre problemas de rede do NuGet +.


2
mas isso pressupõe que o devenve.exe (Visual Studio) está instalado, o que não deve estar em um servidor de compilação
— Kat Lim Ruiz

Tive que remover essa configuração para que funcionasse, de modo que siga as configurações de proxy do Internet Explorer.
— Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Trabalho para mim, ele usou as configurações de proxy do sistema. Testado no WINDOWS 10
— Van Thoai Nguyen

11

Caso esteja usando a versão https do nuget ( https://www.nuget.org ), lembre-se de que você deve definir os valores com https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
A senha https é um texto simples em nuget.config se você seguir o guia arcains, mas usando https
— dmce

Isso corrigiu meu problema, mais detalhes aqui github.com/NuGet/Home/issues/5980 .
— jpierson,

Portanto, não podemos usar 'http' para definir o endereço de proxy se estivermos usando a versão https do nuget?
— codificador kemp de

8

Posso estar errado, mas achei que ele usava as configurações de proxy do IE.

Se perceber que você precisa fazer o login, ele abrirá uma caixa de diálogo e pedirá que você o faça (login).

Por favor, veja a descrição disso aqui -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
Sim - o problema com esta abordagem surge quando a política de grupo da sua empresa reverte continuamente as configurações do IE para aquelas que não funcionam com o Nuget, como acontece no meu local de trabalho
— Xcalibur

5

Para qualquer pessoa que use o VS2015: Eu estava encontrando um erro "Autenticação de proxy 407 necessária", que interrompeu minha compilação. Depois de algumas horas investigando, descobriu-se que o MSBuild não estava enviando credenciais ao tentar baixar o Nuget como parte do destino 'DownloadNuGet'. A solução foi adicionar o seguinte XML a C: \ Arquivos de programas (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config dentro do <configuration>elemento:

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

4

A solução para mim foi incluir

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

No nuget.configarquivo.


1
Onde posso encontrar este arquivo?
— Marcelo Machado

2
@MarceloMachado: Aqui:% AppData% \ NuGet \ NuGet.config
— Torben Kohlmeier

localização do nuget.config do usuário no Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
— Stato Machino

Você pode escolher fazer `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` sozinho, sem especificar o nome de usuário e a senha. Lembre-se de reiniciar o Visual Studio depois disso!
— taylorswiftfan

Reiniciar o VS é importante! Além disso, acho que tive problemas ao executar como administrador (necessário para ser executado como um usuário normal?)
— Marte

4

Outra opção para o mesmo "proxy para nuget": alternativamente, você pode definir as configurações de proxy do nuget para se conectar por meio do fiddler . Abaixo, o cmd salvará as configurações de proxy no arquivo de configuração nuget padrão para o usuário em%APPDATA%\NuGet\NuGet.Config

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

Sempre que você precisar do nuget para acessar a Internet, basta abrir o Fiddler, supondo que você tenha o Fiddler escutando na porta padrão 8888.

Esta configuração não é sensível a alterações de passwork porque o fiddler resolverá qualquer autenticação com o proxy up stream para você.



1

Apenas uma pequena adição ...

Se funcionar para você fornecer apenas a configuração http_proxy e não o nome de usuário e a senha, recomendo colocar as configurações de proxy em um arquivo nuget.config local do projeto e confirmá-lo no controle de origem. Dessa forma, todos os membros da equipe têm as mesmas configurações.

Crie um arquivo. \ Nuget.config vazio

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

Então:

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

E, finalmente, envie seu novo arquivo Nuget.config local do projeto.


0

Experimente isso . Basicamente, a conexão pode falhar se o seu sistema não confiar no certificado nuget.


0

Além das sugestões de @arcain, tive que adicionar o seguinte url do Windows Azure Content Delivery Network à lista branca do nosso servidor proxy:

.msecnd.net

0

A solução acima por @arcain Plus as etapas abaixo me resolveram o problema

  1. Modificar as "fontes de pacote" nas configurações do gerenciador de pacotes Nuget para marcar a caixa de seleção para usar as configurações nuget.org resolveu meu problema.

  2. Também mudei para usar esse (nuget.org) como a primeira escolha de fonte de pacote
    . Desmarquei as fontes de pacotes da minha empresa para garantir que o nuget sempre fosse obtido de fontes globais.


0

No Windows Server 2016 Standard, que é o que eu desenvolvo, eu só tive que abrir o Painel de Controle do Credential Manager e limpar as configurações de proxy em cache para Visual Studio que não eram mais válidas e, em seguida, reiniciar o Visual Studio. Na próxima vez que abri o Gerenciador de Pacotes Nuget, fui solicitado a fornecer credenciais de proxy, o que me fez trabalhar novamente.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.