プロキシの背後にあるNuGet


104

NuGetでは、1.4バージョン以降、プロキシ設定を構成できることがわかりました。しかし、コマンドラインの例は見つかりません。

ビルドを実行しようとしていますが、NuGetが接続できません。

コマンドラインでプロキシ設定を構成するにはどうすればよいですか?


1
プロキシの問題が発生している他のユーザーの利益のために:NuGetがメッセージを表示する場合、プロキシである可能性があることがわかります:「リモート名を解決できませんでした: 'nuget.org'」
pduncan

4
http_proxyhttps_proxy環境変数、およびシステムのプロキシ設定を確認するように注意してください
大佐パニック

現在githubに問題があります:github.com/NuGet/Home/issues/458
thekip

回答:


202

これは、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(Windows 7マシンではC:\ Users \ myUserName \ AppData \ Roamingにマップされます):

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

ちなみに、これにより、Visual Studioでパッケージソースに初めてアクセスしたときにのみNuGetが動作する問題も修正されました。

このアプローチを試みた一部の人々http_proxy.passwordは、コマンドラインからのキーの設定を省略したり、構成ファイルから実際のキーを削除したりしても、NuGet関数を引き続き使用できるというコメントを通じて報告していることに注意してください。プロキシ全体。

しかし、あなたの見つけた場合、あなたがすることをしなければならない、NuGetの設定ファイルにパスワードを指定し、プロキシ資格情報はまた、ネットワークされている場合は、あなたがあなたのネットワークへのログインを変更すると、コマンドラインからNuGetの設定で保存されたパスワードを更新する必要があることを覚えておいてください資格情報


NuGetコマンドラインではNuGet.configファイルにエントリが追加されませんでしたが、手動でファイルを編集すると、うまくいきました。
pduncan 2013

19
私の場合、http_proxy.passwordキーを完全に省略しましたが、認証されたAD資格情報を通過できたようです。これにより、パスワードを頻繁に変更する必要がなくなります。
クリスパロット卿2014年

5
警告 arcainが提案する構成を使用するときは注意してください。Windowsパスワードを変更するときは、必ず設定ファイルのパスワードを変更してください。会社のポリシーに従ってパスワードを変更した後、私のWindowsアカウントがランダムにロックアウトされました。この構成エントリがこの問題全体を引き起こしていることを理解するのに数時間かかりました。最良のオプションは、@ Sir Crispalotによって提案されたhttp_proxy.passwordキーを単に削除することです
AJ Qarshi

3
クリスパロット卿が言ったことを試して、http_proxy.passwordキーを削除してください。これは一部の人にとっては効果的で、NuGet構成ファイルのパスワードを変更する必要がなくなりました。
2014年

4
ここでのもう1つの勝利-これらの設定を使用し、パスワードキーを省略することは、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のプロキシ設定に従うようにするには、この設定を削除して機能させる必要がありました。
Rosdi Kasim

xml <system.net> <defaultProxy useDefaultCredentials="true" enabled="true"> </defaultProxy> <settings> <ipv6 enabled="true"/> </settings> </system.net> 私にとっては、システムのプロキシ設定を使用しました。WINDOWS 10でテスト
Van Thoai Nguyen

11

nugetのhttpsバージョン(https://www.nuget.org)を使用している場合に備えて、httpsで値を設定する必要があることに注意してください。

  • https_proxy
  • https_proxy.user
  • https_proxy.password

1
Arcainsガイドに従っていてhttpsを使用している場合、httpsパスワードはnuget.configのプレーンテキストです
dmce

これで私の問題が解決しました。詳細については、github.com/NuGet/Home/issues/5980をご覧ください。
jpierson 2017年

したがって、httpsバージョンのnugetを使用している場合、「http」を使用してプロキシアドレスを設定することはできませんか?
コーダーケンプ

8

私は間違っている可能性がありますが、IEのプロキシ設定を使用していると思いました。

ログインする必要があると判断すると、ダイアログが開き、ログインするように求められます(つまり、ログインします)。

こちらの説明をご覧ください-> http://docs.nuget.org/docs/release-notes/nuget-1.5


1
それはそうです-このアプローチの問題は、会社のグループポリシーが、私の職場で発生するように、IE設定をNugetで機能しない設定に継続的に戻すときに発生します
Xcalibur

5

VS2015を使用しているユーザーへ:「407プロキシ認証が必要です」というエラーが発生し、ビルドが壊れました。数時間調査した結果、「DownloadNuGet」ターゲットの一部としてNugetをダウンロードしようとしたときに、MSBuildが資格情報を送信していなかったことが判明しました。解決策は、次のXMLを<configuration>要素内のC:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ MSBuild.exe.configに追加することでした。

<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

Windows 10でのユーザーのnuget.configの場所:%AppData%\ Roaming \ Nuget \ NuGet.config
Stato

ユーザー名とパスワードを指定せずに、単独で `<add key =" http_proxy "value =" http:// <IP>:<Port> "/>`を実行することを選択できます。その後、忘れずにVisual Studioを再起動してください。
taylorswiftfan

VSの再起動は重要です!また、管理者として実行すると問題が発生したと思います(通常のユーザーとして実行する必要がありますか?)
Mars

4

同じ「nugetのプロキシ」の別のフレーバー:あるいは、fiddlerを介して接続するようにnugetプロキシ設定を設定できます。以下のcmdは、ユーザーのデフォルトのnuget構成ファイルにプロキシ設定を保存します%APPDATA%\NuGet\NuGet.Config

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

インターネットに接続するためにnugetが必要なときはいつでも、Fiddlerを開いて、デフォルトのポート8888でFiddlerがリッスンしていると仮定します。

フィドラーはアップストリームプロキシを使用してすべての認証を解決するため、この構成はパスワークの変更の影響を受けません。



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

@arcainからの提案とは別に、次のWindows Azureコンテンツ配信ネットワークのURLをプロキシサーバーのホワイトリストに追加する必要がありました。

.msecnd.net

0

上記の@arcain Plusによる上記の解決策で問題が解決しました

  1. Nugetパッケージマネージャー設定の下の「パッケージソース」を変更して、nuget.org設定を使用するチェックボックスをオンにすると、問題が解決しました。

  2. また、パッケージソースの最初の選択肢としてthat(nuget.org)を使用するように変更しました。
    会社のパッケージソースのチェックを外して、nugetが常にグローバルソースから取得されるようにしました。


0

私が開発しているWindows Server 2016 Standardでは、Credential Managerコントロールパネルを開き、キャッシュされたVisual Studioのプロキシ設定を消去して、無効にしてからVisual Studioを再起動する必要がありました。次にNuget Package Managerを開いたときに、プロキシ資格情報の入力を求められたため、再び作業を開始しました。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.