web-dev-qa-db-ja.com

プロキシの背後にあるNuGet

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

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

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

89
Ricardo

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関数を使用できました。

ただし、must NuGet configファイルでパスワードを指定していることがわかった場合、NuGet configの保存されたパスワードをコマンドから更新する必要があることを覚えておいてください。プロキシ資格情報がネットワーク資格情報でもある場合、ネットワークログインを変更するときの行。

177
arcain

たぶんあなたはこれをあなたの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 tracker から見つけました

NuGet +ネットワークの問題に関するその他の貴重なコメントもあります。

21
Tx3

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

  • https_proxy
  • https_proxy.user
  • https_proxy.password
10
Roman Mahrer

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

ログインする必要があることがわかると、ダイアログが開き、ログインするように求められます(ログイン)。

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

7
David McLean

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

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

私の解決策は含めることでした

<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ファイル内。

2
jfernandeze

たぶん、これは他の誰かを助ける。私にとっての解決策は、Visual Studio(2015/2017)でNuGet設定を開き、新しいフィードURLを追加することでした: http://www.nuget.org/api/v2/

プロキシ関連の設定を変更する必要はありませんでした。

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

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

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

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

1
Aishel M

ほんの小さな追加...

ユーザー名とパスワードではなく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ファイルをコミットします。

1
8DH

this を試してください。基本的に、システムがNuget証明書を信頼していない場合、接続が失敗する可能性があります。

0
Ivan Danilov

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

.msecnd.net
0
mithun_daa

@arcain Plusによる上記のソリューションは、以下の手順で問題を解決しました

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

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

0
Ram