Bir proxy arkasında NuGet


105

NuGet'in 1.4 sürümünden beri proxy ayarları yapılandırmasına izin verdiğini anladım. Ancak herhangi bir komut satırı örneği bulamıyorum.

Bazı derlemeleri çalıştırmaya çalışıyorum ve NuGet bağlanamıyor.

Komut satırında proxy ayarlarını nasıl yapılandırırım?


1
Proxy sorunlarıyla karşılaşan diğer kullanıcıların yararı için: NuGet şu iletiyi görüntülerse bunun proxy olabileceğini bilirsiniz: "Uzak ad çözülemedi: 'nuget.org'"
pduncan

4
http_proxyVe https_proxyortam değişkenlerini ve sistem proxy ayarlarınızı kontrol etmeye dikkat edin
Albay Panic

Bunun için şu anda github'da
thekip

Yanıtlar:


205

Bunu, NTLM kimlik doğrulamasını kullanan kurumsal proxy'imle çalıştırmak için yaptığım şey şu. NuGet.exe dosyasını indirdim ve ardından aşağıdaki komutları çalıştırdım ( CodePlex'teki bu tartışmanın yorumlarında buldum ):

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

Bu benim şu koymak NuGet.configbulunan %appdata%\NuGet(eşleştiren hangi C: \ Users \ KullanıcıAdım \ AppData \ Roaming benim Windows 7 makinede):

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

Bu arada, bu aynı zamanda NuGet ile ilgili sorunumu yalnızca Visual Studio'da paket kaynağına ilk vurduğumda çalışırken çözdü.

Bu yaklaşımı deneyen bazı kişilerin, http_proxy.passwordanahtarı komut satırından ayarlamayı ihmal edebildiklerini veya yapılandırma dosyasından sonradan silebildiklerini ve yine de NuGet işlevine sahip olduklarını bildirdiklerini unutmayın. vekil üzerinden.

Bununla birlikte, parolanızı NuGet yapılandırma dosyasında belirtmeniz gerektiğini fark ederseniz, ağ oturum açma bilgilerinizi değiştirdiğinizde, proxy kimlik bilgileriniz de ağınızsa, NuGet yapılandırmasında depolanan parolayı komut satırından güncellemeniz gerektiğini unutmayın. kimlik bilgileri .


NuGet komut satırı girdileri NuGet.config dosyama eklemedi, ancak dosyayı el ile düzenledikten sonra harika çalıştı.
pduncan

20
Benim durumumda, http_proxy.password anahtarını tamamen atladım ve kimliği doğrulanmış AD kimlik bilgilerimi geçirmekten mutlu görünüyordu. Bu, parolayı sık sık değiştirme ihtiyacını ortadan kaldırır.
Sir Crispalot

5
Uyarı Arcain tarafından önerilen yapılandırmayı kullanırken dikkatli olun. Windows parolanızı değiştirdiğinizde yapılandırma dosyasındaki parolayı değiştirdiğinizden emin olun. Windows hesabım, şirket politikasına göre şifre değiştirildikten sonra rastgele kilitlendi. Bu yapılandırma girişinin tüm bu soruna neden olduğunu anlamam birkaç saatimi aldı. En iyi seçenek, @ Sir Crispalot tarafından önerildiği gibi http_proxy.password anahtarını kaldırmaktır
AJ Qarshi

3
Sir Crispalot'un bahsettiği şeyi deneyin ve http_proxy.password anahtarını kaldırın. Bu, bazı insanlar için işe yaradı ve NuGet yapılandırma dosyasındaki parolayı değiştirmek zorunda kalmamalarına izin verdi.
arcain

4
Burada başka bir zafer - bu ayarları kullanmak ve şifre anahtarını çıkarmak, NTLM kimlik doğrulamalı kurumsal proxy'imin arkasında benim için çalıştı.
Cᴏʀʏ

22

Belki bunu devenv.exe.config dosyanıza deneyebilirsiniz.

<system.net>
    <defaultProxy useDefaultCredentials="true" enabled="true">
        <proxy proxyaddress="http://proxyaddress" />
    </defaultProxy>
    <settings>
        <servicePointManager expect100Continue="false" />
        <ipv6 enabled="true"/>
    </settings>
</system.net>

NuGet Sorun izleyicisinden buldum

NuGet + ağ sorunları hakkında başka değerli yorumlar da vardır.


2
ancak bu, bir derleme sunucusunda olmaması gereken devenve.exe'nin (yani Visual Studio) kurulu olduğunu varsayar
Kat Lim Ruiz

Çalışması için bu ayarı kaldırmam gerekti, böylece IE'nin proxy ayarlarını takip etsin.
Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Benim için çalış, sistem proxy ayarlarını kullandı. WINDOWS 10
Van Thoai Nguyen'de


8

Yanılıyor olabilirim ama IE'nin proxy ayarlarını kullandığını düşündüm.

Oturum açmanız gerektiğini görürse, bir iletişim kutusu açar ve bunu yapmanızı ister (yani oturum açın).

Lütfen burada bunun açıklamasına bakın -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
Olur - bu yaklaşımla ilgili sorun, şirketinizin grup politikası sürekli olarak IE ayarlarınızı iş yerimde olduğu gibi Nuget ile çalışmayan ayarlara döndürdüğünde ortaya çıkar
Xcalibur

5

VS2015 kullanan herkes için: "407 Proxy Kimlik Doğrulaması gerekli" hatasıyla karşılaşıyordum ve bu durum yapımı bozdu. Birkaç saat araştırma yaptıktan sonra, MSBuild'in Nuget'i 'DownloadNuGet' hedefinin bir parçası olarak indirmeye çalışırken kimlik bilgilerini göndermediği ortaya çıktı. Çözüm, aşağıdaki XML'yi <configuration>öğenin içindeki C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config dosyasına eklemekti :

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

4

Benim için çözüm dahil etmekti

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

Gelen nuget.configdosyanın.


1
Bu dosyayı nerede bulabilirim?
Marcelo Machado

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

kullanıcının Windows 10'daki nuget.config konumu:% AppData% \ Roaming \ Nuget \ NuGet.config
Stato

Kullanıcı adını ve şifreyi belirtmeden tek başına "<add key =" http_proxy "value =" http: // <IP>: <Port> "/>" yapmayı seçebilirsiniz. Bundan sonra Visual Studio'yu yeniden başlatmayı unutmayın!
taylorswiftfan

VS'yi yeniden başlatmak önemlidir! Ayrıca, Yönetici olarak çalışırken sorun yaşadığımı düşünüyorum (normal bir kullanıcı olarak çalıştırmam gerekiyor mu?)
Mars

4

Aynı "nuget için proxy" için başka bir özellik: Alternatif olarak, nuget proxy ayarlarınızı fiddler aracılığıyla bağlanacak şekilde ayarlayabilirsiniz . Cmd'nin altında, proxy ayarlarını kullanıcı için varsayılan nuget yapılandırma dosyasına kaydedecektir.%APPDATA%\NuGet\NuGet.Config

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

İnternete ulaşmak için nuget'e ihtiyacınız olduğunda, sadece Fiddler'ı açın, varsayılan 8888 portunda fiddler dinlediğinizi düşünün.

Bu yapılandırma, geçiş değişikliklerine duyarlı değildir çünkü fiddler sizin için yukarı akış proxy'si ile tüm kimlik doğrulamalarını çözecektir.



1

Sadece küçük bir ekleme ...

Kullanıcı adı ve parolayı değil, yalnızca http_proxy ayarını sağlamanız işe yararsa, proxy ayarlarını bir proje yerel nuget.config dosyasına koymanızı ve bunu kaynak kontrolüne kaydetmenizi öneririm. Bu şekilde tüm ekip üyeleri aynı ayarları alır.

Boş bir. \ Nuget.config oluşturun

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

Sonra:

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

Ve son olarak, yeni projenizin yerel Nuget.config dosyasını işleyin.


1

Üzerinde geliştirdiğim şey olan Windows Server 2016 Standard'da, Kimlik Bilgisi Yöneticisi Kontrol Panelini açmam ve artık geçerli olmayan Visual Studio için önbelleğe alınmış proxy ayarlarını temizlemem ve ardından Visual Studio'yu yeniden başlatmam gerekiyordu. Bir dahaki sefere Nuget Paket Yöneticisini açtığımda, tekrar çalışmamı sağlayan proxy kimlik bilgileri istenmişti.

Bakınız: https://support.microsoft.com/en-us/help/4026814/windows-accessing-credential-manager


1
Dahili bir kurumsal repo için 407 hatası alırken benim için çalıştı.
thudbutt

0

Deneyin bu . Temel olarak, sisteminiz nuget sertifikasına güvenmiyorsa bağlantı başarısız olabilir.


0

@Arcain'den gelen öneriler dışında aşağıdaki Windows Azure İçerik Dağıtım Ağı url'sini proxy sunucumuzun beyaz listesine eklemem gerekiyordu:

.msecnd.net

0

Yukarıdaki Çözüm @arcain Plus aşağıdaki adımlar sorunu çözdü

  1. Nuget.org ayarlarını kullanmak için onay kutusunu işaretlemek için Nuget paket yöneticisi ayarları altındaki "paket kaynakları" nı değiştirmek sorunumu çözdü.

  2. Ayrıca bunu (nuget.org) paket kaynağının ilk seçimi olarak kullanmak için değiştirdim.
    Nuget'in her zaman küresel kaynaklardan alındığından emin olmak için şirket paketi kaynaklarımın işaretini kaldırdım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.