NuGet di belakang proxy

104

Saya menemukan bahwa NuGet memungkinkan konfigurasi pengaturan proxy sejak versi 1.4. Tapi, saya tidak dapat menemukan contoh baris perintah apa pun.

Saya mencoba menjalankan beberapa build dan NuGet tidak dapat terhubung.

Bagaimana cara mengonfigurasi pengaturan proxy pada baris perintah?

Ricardo
sumber
1
Untuk kepentingan pengguna lain yang menghadapi masalah proxy: Anda akan tahu bahwa itu mungkin proxy jika NuGet menampilkan pesan: "Nama jarak jauh tidak dapat diselesaikan: 'nuget.org'"
pduncan
4
Hati-hati untuk memeriksa http_proxydan https_proxyvariabel lingkungan serta pengaturan proxy sistem Anda
Kolonel Panic
Ada masalah untuk itu sekarang di github: github.com/NuGet/Home/issues/458
thekip

Jawaban:

202

Inilah yang saya lakukan agar ini berfungsi dengan proxy perusahaan saya yang menggunakan otentikasi NTLM. Saya mengunduh NuGet.exe dan kemudian menjalankan perintah berikut (yang saya temukan di komentar untuk diskusi ini di 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

Ini menempatkan yang berikut ini di NuGet.configlokasi saya di %appdata%\NuGet(yang memetakan ke C: \ Users \ myUserName \ AppData \ Roaming di mesin Windows 7 saya):

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

Kebetulan, ini juga memperbaiki masalah saya dengan NuGet yang hanya berfungsi saat pertama kali saya menekan sumber paket di Visual Studio.

Perhatikan bahwa beberapa orang yang telah mencoba pendekatan ini telah melaporkan melalui komentar bahwa mereka dapat menghilangkan pengaturan http_proxy.passwordkunci dari baris perintah, atau menghapusnya setelah fakta dari file konfigurasi, dan masih dapat memiliki fungsi NuGet melintasi proxy.

Namun, jika Anda menemukan bahwa Anda harus menentukan kata sandi Anda di file konfigurasi NuGet, ingatlah bahwa Anda harus memperbarui kata sandi yang tersimpan di konfigurasi NuGet dari baris perintah saat Anda mengubah login jaringan Anda, jika kredensial proxy Anda juga jaringan Anda kredensial .

arcain
sumber
Baris perintah NuGet tidak menambahkan entri ke file NuGet.config saya, tetapi setelah saya mengedit file secara manual, itu bekerja dengan baik.
pduncan
19
Dalam kasus saya, saya menghilangkan kunci http_proxy.password sepenuhnya dan tampaknya dengan senang hati melewati kredensial AD saya yang diautentikasi. Ini menghemat kebutuhan untuk sering mengubah kata sandi.
Sir Crispalot
5
Peringatan Berhati-hatilah saat Anda menggunakan konfigurasi yang disarankan oleh arcain. Pastikan Anda mengubah kata sandi di file konfigurasi saat Anda mengubah kata sandi Windows Anda. Akun Windows saya terkunci secara acak setelah mengubah kata sandi sesuai kebijakan perusahaan. Butuh beberapa jam bagi saya untuk mengetahui bahwa entri konfigurasi inilah yang menyebabkan seluruh masalah ini. Pilihan terbaik adalah dengan menghapus kunci http_proxy.password seperti yang disarankan oleh @Sir Crispalot
AJ Qarshi
3
Coba apa yang disebutkan Sir Crispalot dan hapus kunci http_proxy.password. Itu telah berhasil bagi sebagian orang dan memungkinkan mereka untuk menghindari keharusan mengubah kata sandi di file konfigurasi NuGet.
arcain
4
Kemenangan lain di sini - menggunakan pengaturan ini dan menghilangkan kunci kata sandi bekerja untuk saya di belakang proxy perusahaan saya dengan otentikasi NTLM.
Cᴏʀʏ
22

Mungkin Anda bisa mencoba ini ke devenv.exe.config Anda

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

Saya menemukannya dari pelacak Masalah NuGet

Ada juga komentar berharga lainnya tentang masalah jaringan NuGet +.

Tx3
sumber
2
tetapi ini mengasumsikan devenve.exe (Visual Studio yang) diinstal, yang seharusnya tidak ada di server pembuatan
Kat Lim Ruiz
Saya harus menghapus pengaturan ini untuk membuatnya berfungsi, sehingga mengikuti pengaturan proxy IE.
Rosdi Kasim
xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Bekerja untuk saya, itu menggunakan pengaturan proxy sistem. Diuji pada WINDOWS 10
Van Thoai Nguyen
11

Jika Anda menggunakan versi https dari nuget ( https://www.nuget.org ), ketahuilah bahwa Anda harus mengatur nilainya dengan https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password
Roman Mahrer
sumber
1
Kata sandi https adalah teks biasa di nuget.config jika Anda mengikuti panduan arcains tetapi menggunakan https
dmce
Ini memperbaiki masalah saya, detail selengkapnya di sini github.com/NuGet/Home/issues/5980 .
jpierson
Jadi kita tidak bisa menggunakan 'http' untuk mengatur alamat proxy jika kita menggunakan nuget versi https?
coder kemp
8

Saya bisa saja salah tetapi saya pikir itu menggunakan pengaturan proxy IE.

Jika terlihat bahwa Anda perlu masuk, dialog akan terbuka dan meminta Anda untuk melakukannya (yang sudah masuk).

Silakan lihat deskripsinya di sini -> http://docs.nuget.org/docs/release-notes/nuget-1.5

David McLean
sumber
1
Memang - masalah dengan pendekatan ini muncul ketika kebijakan grup perusahaan Anda terus-menerus mengembalikan pengaturan IE Anda ke pengaturan yang tidak berfungsi dengan Nuget, seperti yang terjadi di tempat kerja saya
Xcalibur
5

Kepada siapa pun yang menggunakan VS2015: Saya menemui kesalahan "407 Proxy Authentication required", yang merusak build saya. Setelah beberapa jam menyelidiki, ternyata MSBuild tidak mengirimkan kredensial saat mencoba mengunduh Nuget sebagai bagian dari target 'DownloadNuGet'. Solusinya adalah menambahkan XML berikut ini ke C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config di dalam <configuration>elemen:

<system.net>
            <defaultProxy useDefaultCredentials="true">
            </defaultProxy>
</system.net>
r590
sumber
4

Solusi bagi saya adalah memasukkan

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

Di dalam nuget.configfile.

jfernandeze
sumber
1
Di mana saya dapat menemukan file ini?
Marcelo Machado
2
@MarceloMachado: Di sini:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier
lokasi nuget.config pengguna di Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino
Anda dapat memilih untuk melakukan `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` sendiri tanpa menentukan nama pengguna dan sandi. Ingatlah untuk memulai ulang Visual Studio setelah itu!
taylorswiftfan
Memulai ulang VS itu penting! Selain itu, saya rasa saya mengalami masalah saat menjalankan sebagai Admin (perlu menjalankan sebagai pengguna biasa?)
Mars
4

Ragam lain untuk "proxy untuk nuget" yang sama: sebagai alternatif, Anda dapat menyetel setelan proxing nuget Anda untuk terhubung melalui fiddler . Di bawah cmd akan menyimpan pengaturan proxy dalam file konfigurasi nuget default untuk pengguna di%APPDATA%\NuGet\NuGet.Config

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

Kapanpun Anda membutuhkan nuget untuk menjangkau internet, buka saja Fiddler, dengan asumsi Anda memiliki fiddler yang mendengarkan pada port default 8888.

Konfigurasi ini tidak sensitif terhadap perubahan passwork karena fiddler akan menyelesaikan autentikasi apa pun dengan proxy up stream untuk Anda.

Aishel M
sumber
2

Mungkin ini membantu orang lain. Bagi saya solusinya adalah membuka pengaturan NuGet di Visual Studio (2015/2017) dan menambahkan URL umpan baru: http://www.nuget.org/api/v2/ .

Saya tidak perlu mengubah pengaturan terkait proxy.

Juliano Nunes Silva Oliveira
sumber
1

Hanya sedikit tambahan ...

Jika berhasil bagi Anda untuk hanya menyediakan pengaturan http_proxy dan bukan nama pengguna dan kata sandi, saya sarankan untuk meletakkan pengaturan proxy di file nuget.config lokal proyek dan memasukkannya ke kontrol sumber. Dengan begitu semua anggota tim mendapatkan pengaturan yang sama.

Buat yang kosong. \ Nuget.config

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

Kemudian:

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

Dan akhirnya komit file Nuget.config lokal proyek baru Anda.

8DH
sumber
0

Coba ini . Pada dasarnya, koneksi bisa gagal jika sistem Anda tidak mempercayai sertifikat nuget.

Ivan Danilov
sumber
0

Terlepas dari saran dari @arcain, saya harus menambahkan url Jaringan Pengiriman Konten Windows Azure berikut ke server proxy kami, daftar putih:

.msecnd.net
mithun_daa
sumber
0

Di atas Solusi oleh @arcain Plus langkah-langkah di bawah ini memecahkan masalah saya

  1. Memodifikasi "sumber paket" di bawah pengaturan pengelola paket Nuget untuk mencentang kotak centang untuk menggunakan pengaturan nuget.org menyelesaikan masalah saya.

  2. Saya juga berubah untuk menggunakan itu (nuget.org) sebagai pilihan pertama sumber paket.
    Saya tidak mencentang sumber paket perusahaan saya untuk memastikan nuget selalu diambil dari sumber global.

Ram
sumber
0

Pada Windows Server 2016 Standard, yang saya kembangkan, saya hanya perlu membuka Panel Kontrol Manajer Kredensial dan menghapus pengaturan proxy cache untuk Visual Studio yang tidak lagi valid dan kemudian memulai ulang Visual Studio. Lain kali saya membuka Nuget Package Manager, saya dimintai kredensial proxy, yang membuat saya berfungsi kembali.

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

jayint32
sumber