NuGet за проксі


104

Я розумію, що NuGet дозволяє налаштувати проксі-сервіси з версії 1.4. Але я не можу знайти жодного прикладу командного рядка.

Я намагаюся запустити деяку збірку, і NuGet не може підключитися.

Як налаштувати параметри проксі в командному рядку?


1
На користь інших користувачів, які стикаються з проблемами проксі-сервера. Ви дізнаєтесь, що це може бути проксі-сервер, якщо NuGet відобразить повідомлення: "Віддалене ім'я не вдалося вирішити: 'nuget.org'"
pduncan

4
Будьте уважні, щоб перевірити змінні http_proxyта https_proxyоточення, а також налаштування системного проксі
полковник Паніка

Зараз існує проблема для цього на github: github.com/NuGet/Home/isissue/458
thekip

Відповіді:


203

Ось що я зробив, щоб з цим працювати з моїм корпоративним проксі, який використовує аутентифікацію NTLM. Я завантажив NuGet.exe, а потім запустив наступні команди (які я знайшов у коментарях до цього обговорення на 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

Це помістило наступне в моєму, NuGet.configрозташованому за адресою %appdata%\NuGet(яке відображається в C: \ Users \ myUserName \ AppData \ Roaming на моїй машині 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>

Між іншим, це також вирішило мою проблему з NuGet, працюючи лише тоді, коли я потрапив у джерело пакунків у Visual Studio.

Зауважте, що деякі люди, які спробували такий підхід, повідомили через коментарі, що вони змогли опустити налаштування http_proxy.passwordключа з командного рядка або видалити його після факту з конфігураційного файлу і все ще мали можливість функціонувати NuGet через проксі.

Якщо ви виявите, що потрібно вказати свій пароль у конфігураційному файлі NuGet, пам’ятайте, що вам потрібно оновити збережений пароль у конфігурації NuGet з командного рядка, коли ви змінюєте мережевий логін, якщо ваші облікові записи проксі також є вашою мережею. повноваження .


Командний рядок NuGet не додав записи до мого файлу NuGet.config, але як тільки я вручну редагував файл, він працював чудово.
pduncan

19
У моєму випадку я повністю пропустив ключ http_proxy.password, і, здавалося б, був щасливий пройти через мої аутентифіковані облікові дані AD. Це економить необхідність часто змінювати пароль.
Сер Кріспалот

5
Попередження Будьте обережні, коли використовуєте конфігурацію, запропоновану arcain. Переконайтеся, що ви змінюєте пароль у конфігураційному файлі під час зміни пароля Windows. Мій обліковий запис Windows було випадково заблоковано після зміни пароля відповідно до політики компанії. Мені знадобилося кілька годин, щоб зрозуміти, що цей запис конфігурації викликає цілу проблему. Найкращий варіант - просто видалити ключ http_proxy.password, як запропонував @Sir Crispalot
AJ

3
Спробуйте, що згадував сер Кріспалот, і видаліть ключ http_proxy.password. Це спрацювало для деяких людей і дозволило їм уникнути необхідності зміни пароля в конфігураційному файлі NuGet.
arcain

4
Ще одна перемога тут - використання цих налаштувань та пропускання ключа пароля працювало для мене за моїм корпоративним проксі з аутентифікацією NTLM.
Cᴏʀʏ

22

Можливо, ви можете спробувати це на своєму 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>

Я знайшов це з трекера NuGet Issue

Є й інші цінні коментарі щодо питань мережі NuGet +.


2
але це передбачає встановлений devenve.exe (Visual Studio, який є), який не повинен бути на сервері збірки
Kat Lim Ruiz

Мені довелося видалити цей параметр, щоб він працював, щоб він відповідав налаштуванням проксі IE.
Росді Касим

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> Працюй для мене, він використовував параметри системного проксі. Тестований на
ВІННІ

11

На всякий випадок, якщо ви використовуєте https версію nuget ( https://www.nuget.org ), пам’ятайте, що вам потрібно встановити значення за допомогою https.

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
Пароль пароля https - це звичайний текст у nuget.config, якщо ви дотримуєтесь інструкції з аркаїнами, але використовуєте https
dmce

Це вирішило мою проблему, детальніше тут github.com/NuGet/Home/isissue/5980 .
jpierson

Тож ми не можемо використовувати "http" для встановлення проксі-адреси, якщо ми використовуємо https версію нута?
kemp kemp

8

Я можу помилитися, але я подумав, що він використовує налаштування проксі IE.

Якщо він бачить, що вам потрібно увійти, він відкриває діалогове вікно і просить вас зробити це (увійти, що є).

Ознайомтесь з описом цього тут -> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
Так - проблема з таким підходом виникає, коли групова політика вашої корпорації постійно повертає ваші налаштування IE тим, хто не працює з Nuget, як це відбувається в моєму місці роботи
Xcalibur

5

Для всіх, хто використовує VS2015: я зіткнувся з помилкою "407 потрібна автентифікація проксі", яка порушила мою збірку. Після кількох годин дослідження, виявляється, MSBuild не надсилав облікові дані при спробі завантажити Nuget як частину цілі "DownloadNuGet". Рішенням було додати наступний XML до C: \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe.config всередині <configuration>елемента:

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

4

Рішення для мене було включити

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

У nuget.configфайлі.


1
Де я можу знайти цей файл?
Марсело Мачадо

2
@MarceloMachado: Ось:% AppData% \ NuGet \ NuGet.config
Torben Kohlmeier

користувача nuget.config у Windows 10:% ​​AppData% \ Roaming \ Nuget \ NuGet.config
Stato Machino

Ви можете зробити `<add key =" http_proxy "value =" http: // <IP>: <Port> "/>` самостійно, не вказуючи ім'я користувача та пароль. Не забудьте після цього перезапустити Visual Studio!
taylorswiftfan

Перезапуск VS важливий! Крім того , я думаю , що у мене були проблеми , що працюють в якості адміністратора (необхідні для роботи в якості звичайного користувача?)
Марс

4

Ще один аромат того ж «proxy for nuget»: як альтернатива, ви можете встановити свої налаштування наближення, щоб підключитися через fiddler . Знизу cmd буде збережено налаштування проксі-сервера в стандартному файлі конфігурації назви для користувача в%APPDATA%\NuGet\NuGet.Config

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

Всякий раз, коли вам потрібен доступ до Інтернету, просто відкрийте Fiddler, вважаючи, що ви слухаєте скрипта на порту 8888 за замовчуванням.

Ця конфігурація не чутлива до змін у роботі, оскільки фіддер вирішить будь-яку автентифікацію за допомогою проксі-потоку для вас.



1

Просто невелике доповнення ...

Якщо ви працюєте лише з налаштуваннями http_proxy, а не з ім'ям користувача та паролем, я рекомендую помістити параметри проксі у проект локального файлу nuget.config та зобов'язати його контролювати джерело. Таким чином всі члени команди отримують однакові налаштування.

Створіть порожню. \ Nuget.config

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

Тоді:

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

І нарешті зафіксуйте свій новий проект локального файлу Nuget.config.


0

Спробуйте це . В основному, підключення може не вдатися, якщо ваша система не довіряє сертифікату нута.


0

Окрім пропозицій від @arcain, я мав додати наступний URL-адресу Мережі доставки вмісту Windows Azure до білого списку нашого проксі-сервера:

.msecnd.net

0

Вище рішення від @arcain Plus нижче кроків вирішило мені проблему

  1. Змінення "джерел пакунків" у налаштуваннях керування пакетами Nuget, щоб встановити прапорець, щоб використовувати налаштування nuget.org, вирішив мою проблему.

  2. Я також змінив, щоб використовувати це (nuget.org) як перший вибір джерела пакунків,
    я знімав прапорці для джерел пакетних пакетів своєї компанії, щоб гарантувати, що цей нут завжди був обраний із глобальних джерел.


0

У Windows Server 2016 Standard, над яким я розвиваюсь, мені просто довелося відкрити панель керування Credential Manager і очистити кешовані налаштування проксі для Visual Studio, які більше не дійсні, а потім перезапустити Visual Studio. Наступного разу, коли я відкрив диспетчера пакунків Nuget, мені було запропоновано проксі-дані, завдяки чому я знову працював.

Дивіться: https://support.microsoft.com/en-us/help/4026814/windows-accessing-credential-manager

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.