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?

Ricardo
fonte
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 .

arcanos
fonte
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 +.

Tx3
fonte
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
Roman Mahrer
fonte
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

David McLean
fonte
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>
r590
fonte
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.

Jfernandeze
fonte
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ê.

Aishel M
fonte
2

Talvez isso ajude outra pessoa. Para mim, a solução foi abrir as configurações do NuGet no Visual Studio (2015/2017) e adicionar um novo URL de feed: http://www.nuget.org/api/v2/ .

Não precisei alterar nenhuma configuração relacionada ao proxy.

Juliano Nunes Silva Oliveira
fonte
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.

8DH
fonte
0

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

Ivan Danilov
fonte
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
mithun_daa
fonte
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.

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

Jayint32
fonte