NuGet detrás de un proxy


104

Me doy cuenta de que NuGet permite la configuración de la configuración del proxy desde la versión 1.4. Pero no puedo encontrar ningún ejemplo de línea de comando.

Estoy intentando ejecutar una compilación y NuGet no se puede conectar.

¿Cómo configuro la configuración del proxy en la línea de comando?


1
Para el beneficio de otros usuarios que encuentran problemas de proxy: sabrá que podría ser el proxy si NuGet muestra el mensaje: "El nombre remoto no se pudo resolver: 'nuget.org'"
pduncan

4
Tenga cuidado de verificar las variables de entorno http_proxyy https_proxy, así como la configuración del proxy de su sistema
Colonel Panic

Hay un problema ahora en github: github.com/NuGet/Home/issues/458
thekip

Respuestas:


202

Esto es lo que hice para que esto funcione con mi proxy corporativo que usa autenticación NTLM. Descargué NuGet.exe y luego ejecuté los siguientes comandos (que encontré en los comentarios de esta discusión sobre 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

Esto puso lo siguiente en mi NuGet.configubicación en %appdata%\NuGet(que se asigna a C: \ Users \ myUserName \ AppData \ Roaming en mi máquina con 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>

Por cierto, esto también solucionó mi problema con NuGet que solo funcionaba la primera vez que ingresé al código fuente del paquete en Visual Studio.

Tenga en cuenta que algunas personas que han probado este enfoque han informado a través de los comentarios que han podido omitir la configuración de la http_proxy.passwordclave desde la línea de comandos, o eliminarla después del hecho del archivo de configuración, y aún podían tener la función NuGet. a través del proxy.

Sin embargo, si descubre que debe especificar su contraseña en el archivo de configuración de NuGet, recuerde que debe actualizar la contraseña almacenada en la configuración de NuGet desde la línea de comando cuando cambie su inicio de sesión de red, si sus credenciales de proxy también son su red. credenciales .


La línea de comandos de NuGet no agregó las entradas a mi archivo NuGet.config, pero una vez que edité manualmente el archivo, funcionó muy bien.
pduncan

19
En mi caso, omití la clave http_proxy.password por completo y parecía estar feliz de pasar mis credenciales de AD autenticadas. Esto evita la necesidad de cambiar la contraseña con frecuencia.
Sir Crispalot

5
Advertencia Tenga cuidado cuando utilice la configuración sugerida por arcain. Asegúrese de cambiar la contraseña en el archivo de configuración cuando cambie su contraseña de Windows. Mi cuenta de Windows se bloqueó aleatoriamente después de cambiar la contraseña según la política de la empresa. Me tomó unas horas darme cuenta de que esta entrada de configuración está causando todo este problema. La mejor opción es simplemente eliminar la clave http_proxy.password como lo sugiere @Sir Crispalot
AJ Qarshi

3
Pruebe lo que mencionó Sir Crispalot y elimine la clave http_proxy.password. Eso ha funcionado para algunas personas y les ha permitido evitar tener que cambiar la contraseña en el archivo de configuración de NuGet.
Arcain

4
Otra victoria aquí: usar esta configuración y omitir la clave de contraseña me funcionó detrás de mi proxy corporativo con autenticación NTLM.
Cᴏʀʏ

22

Tal vez puedas probar esto en tu 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>

Lo encontré en el rastreador de problemas de NuGet

También hay otros comentarios valiosos sobre los problemas de la red NuGet +.


2
pero esto supone que está instalado devenve.exe (Visual Studio), que no debería estar en un servidor de compilación
Kat Lim Ruiz

Tuve que eliminar esta configuración para que funcione, de modo que siga la configuración del proxy de IE.
Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Trabaja para mí, usó la configuración del proxy del sistema. Probado en WINDOWS 10
Van Thoai Nguyen

11

En caso de que esté utilizando la versión https de nuget ( https://www.nuget.org ), tenga en cuenta que debe establecer los valores con https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
La contraseña https es texto sin formato en nuget.config si sigue la guía de arcains pero usa https
dmce

Esto solucionó mi problema, más detalles aquí github.com/NuGet/Home/issues/5980 .
jpierson

¿Entonces no podemos usar 'http' para configurar la dirección proxy si estamos usando la versión https de nuget?
codificador kemp

8

Podría estar equivocado, pero pensé que usaba la configuración de proxy de IE.

Si ve que necesita iniciar sesión, abre un cuadro de diálogo y le pide que lo haga (inicie sesión).

Consulte la descripción de esto aquí -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
Lo hace: el problema con este enfoque surge cuando la política de grupo de su corporación revierte continuamente la configuración de IE a otras que no funcionan con Nuget, como sucede en mi lugar de trabajo
Xcalibur

5

Para cualquiera que use VS2015: Me encontré con un error "407 Proxy Authentication required", que rompió mi compilación. Después de algunas horas de investigación, resulta que MSBuild no estaba enviando credenciales al intentar descargar Nuget como parte del objetivo 'DownloadNuGet'. La solución fue agregar el siguiente XML a C: \ Archivos de programa (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config dentro del <configuration>elemento:

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

4

La solución para mí fue 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>

En el nuget.configarchivo.


1
¿Dónde puedo encontrar este archivo?
Marcelo Machado

2
@MarceloMachado: Aquí:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier

ubicación de nuget.config del usuario en Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino

Puede elegir hacer `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` solo sin especificar el nombre de usuario y la contraseña. ¡Recuerde reiniciar Visual Studio después de eso!
taylorswiftfan

¡Reiniciar VS es importante! Además, creo que tuve problemas para ejecutar como administrador (¿necesitaba ejecutar como un usuario regular?)
Marte

4

Otro sabor para el mismo "proxy para nuget": alternativamente, puede establecer su configuración de proxy nuget para conectarse a través de Fiddler . A continuación, cmd guardará la configuración del proxy en el archivo de configuración de nuget predeterminado para el usuario en%APPDATA%\NuGet\NuGet.Config

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

Siempre que necesite nuget para conectarse a Internet, simplemente abra Fiddler, asumiendo que tiene Fiddler escuchando en el puerto predeterminado 8888.

Esta configuración no es sensible a los cambios de contraseña porque Fiddler resolverá cualquier autenticación con el proxy de flujo ascendente por usted.



1

Solo una pequeña adición ...

Si funciona para que solo proporcione la configuración http_proxy y no el nombre de usuario y la contraseña, le recomiendo que coloque la configuración del proxy en un archivo nuget.config local del proyecto y lo confirme en el control de origen. De esa forma, todos los miembros del equipo obtienen la misma configuración.

Cree un. \ Nuget.config vacío

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

Luego:

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

Y finalmente confirme el archivo Nuget.config local de su nuevo proyecto.


0

Prueba esto . Básicamente, la conexión podría fallar si su sistema no confía en el certificado nuget.


0

Además de las sugerencias de @arcain, tuve que agregar la siguiente URL de la Red de entrega de contenido de Windows Azure a la lista blanca de nuestro servidor proxy:

.msecnd.net

0

La solución anterior por @arcain Plus a continuación, me resolvió el problema.

  1. La modificación de las "fuentes del paquete" en la configuración del administrador de paquetes de Nuget para marcar la casilla de verificación para usar la configuración de nuget.org resolvió mi problema.

  2. También cambié para usar eso (nuget.org) como la primera opción de fuente de paquete.
    Desmarqué las fuentes de paquetes de mi empresa para asegurarme de que el nuget siempre se recogiera de fuentes globales.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.