簡體   English   中英

NuGet 在代理后面

[英]NuGet behind a proxy

我發現 NuGet 自1.4 版本 (2011 年 6 月)起允許代理設置配置。 但是,我找不到任何命令行示例。

我正在嘗試運行一些構建,但 NuGet 無法連接。

如何在命令行上配置代理設置?

這是我為使用我的使用 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 NuGet.config (它映射到我的 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 配置中存儲的密碼憑據

也許你可以試試這個到你的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 問題跟蹤器中找到了它

還有其他關於 NuGet + 網絡問題的寶貴意見。

以防萬一您使用NuGet的 HTTPS 版本,請注意您必須使用 HTTPS 設置值。

  • https_proxy
  • https_proxy.user
  • https_proxy.password

我可能是錯的,但我認為它使用了 IE 的代理設置。

如果它看到您需要登錄,它會打開一個對話框並要求您這樣做(即登錄)。

請在此處查看此說明-> http://docs.nuget.org/docs/release-notes/nuget-1.5

相同的“nuget 代理”的另一種風格:或者,您可以將 nuget 代理設置設置為通過fiddler進行連接。 下面的 cmd 會將代理設置保存在%APPDATA%\\NuGet\\NuGet.Config用戶的默認 nuget 配置文件中

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

每當您需要 nuget 訪問互聯網時,只需打開 Fiddler,假設您讓 Fiddler 監聽默認端口 8888。

此配置對密碼更改不敏感,因為 fiddler 將為您解析任何與上游代理的身份驗證。

對於使用 VS2015 的任何人:我遇到了“需要 407 代理身份驗證”錯誤,這破壞了我的構建。 經過幾個小時的調查,結果發現當嘗試下載 Nuget 作為“DownloadNuGet”目標的一部分時,MSBuild 沒有發送憑據。 解決方案是將以下 XML 添加到 C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\MSBuild.exe.config <configuration>元素內:

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

我的解決方案是包括

<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文件中。

也許這對其他人有幫助。 對我來說,解決方案是在 Visual Studio (2015/2017) 上打開 NuGet 設置並添加一個新的提要 URL: http : //www.nuget.org/api/v2/

我不必更改任何與代理相關的設置。

在我開發的 Windows Server 2016 Standard 上,我只需要打開憑據管理器控制面板並清除不再有效的 Visual Studio 緩存代理設置,然后重新啟動 Visual Studio。 下次我打開 Nuget 包管理器時,系統提示我輸入代理憑據,這讓我再次工作。

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

只是一個小小的補充...

如果只提供 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 文件。

試試這個 基本上,如果您的系統不信任 nuget 證書,連接可能會失敗。

除了來自@arcain 的建議之外,我還必須將以下 Windows Azure 內容交付網絡 url 添加到我們代理服務器的白名單中:

.msecnd.net

以上解決方案由@arcain Plus 以下步驟解決了我的問題

  1. 修改 Nuget 包管理器設置下的“包源”以選中復選框以使用 nuget.org 設置解決了我的問題。

  2. 我也改用那個(nuget.org)作為包源的首選
    我確實取消了我公司的包裹來源,以確保 nuget 總是從全球來源中提取。

作為一個遲到的答案,對我來說這里沒有任何效果。 我想這可能取決於您公司的代理或nuget的實現方式,但出於某種原因,我設置了以下環境變量: http_proxyhttps_proxy 刪除它們后, nuget開始正常工作。

你好,我要進入

%appdata%/Roaming/Nuget/NuGet.Config 並刪除除包源之外的每一行。 哪個應該給出這樣的東西

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
  </packageSources>
</configuration>

完整路徑應為 C:\\Users<username>\\AppData\\Roaming\\NuGet\\NuGet.Config

基本上有一個代理集,我不知道它是如何以及為什么設置的,但它在那里,我也無法ping通它。

它是相關的,但不是相同的場景,但我想為 Linux 上的人記錄。

我在 Fedora 35 上使用 VsCode 和 dotnet sdk 6 安裝

要在代理后面使用dotnet add package我必須使用以下命令格式:

export http_proxy=http://[user]:[pass]@[server]:[port] && dotnet add package <package>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM