dotnet nuget push

本文適用於: ✔️ .NET Core 3.1 SDK 與更新版本

名稱

dotnet nuget push - 將套件推送至伺服器並發行。

概要

dotnet nuget push [<ROOT>] [-d|--disable-buffering] [--force-english-output]
    [--interactive] [-k|--api-key <API_KEY>] [-n|--no-symbols]
    [--no-service-endpoint] [-s|--source <SOURCE>] [--skip-duplicate]
    [-sk|--symbol-api-key <API_KEY>] [-ss|--symbol-source <SOURCE>]
    [-t|--timeout <TIMEOUT>]

dotnet nuget push -h|--help

描述

dotnet nuget push 命令會將套件推送至伺服器並發行。 推送命令會使用在系統 NuGet 組態檔案或組態檔案鏈中找到的伺服器及認證詳細資料。 如需組態檔的詳細資訊,請參閱設定 NuGet 行為。 若要取得 NuGet 的預設設定,請先載入 %AppData%\NuGet\NuGet.config (Windows) 或 $HOME/.nuget/NuGet/NuGet.Config (Linux/macOS),然後再載入任何以磁碟機根目錄開頭,當前目錄結尾的nuget.config.nuget\nuget.config

此命令會推送現有套件。 但不會建立套件。 若要建立套件,請使用 dotnet pack

階層式資料夾結構

此命令可以將套件儲存在階層式資料夾結構中,這是效能最佳化的最佳做法。 若摘要中至少有一個套件位於階層式資料夾結構中,那麼發佈至本機資料夾 (摘要) 時,此命令會如同 nuget add 一樣將套件儲存在階層式資料夾結構中。 如果摘要中已有階層式資料夾結構套件,dotnet nuget push 會遵照該結構。 因此,若您想使用 .NET CLI (而非 NuGet CLI) 發佈至本機摘要:

  • 發佈第一個套件之前,請先前往您的全域套件資料夾 (路徑為 %userprofile%.nuget\packages),選取任一套件識別碼的根資料夾。它可以是不屬於架構的任何套件,例如 .NET Standard 或 ASP.NET。
  • 將所選套件資料夾複製到本機摘要的根資料夾。
  • 使用 dotnet nuget push 發布套件至本機摘要。
  • 您現在可以刪除先前複製進來的資料夾,並自由使用 dotnet nuget push 發佈至本機摘要。

此外,對第一個套件使用 NuGet CLI,如此便可對其餘套件使用 dotnet nuget push。 如需詳細資訊,請參閱本機摘要

引數

  • ROOT

    指定套件推送目標的檔案路徑。

選項。

  • -d|--disable-buffering

    推送至 HTTP(S) 伺服器時停用緩衝處理以減少記憶體使用量。

  • --force-english-output

    強制使用非變異英文文化特性來執行應用程式。

  • -?|-h|--help

    列印如何使用命令的描述。

  • --interactive

    可讓命令停止,並等候使用者輸入或進行動作。 例如完成驗證。 自 .NET Core 3.0 SDK 起提供使用。

  • -k|--api-key <API_KEY>

    伺服器的 API 金鑰。

  • -n|--no-symbols

    不推送符號 (即使存在)。

  • --no-service-endpoint

    不會將 "api/v2/package" 附加至來源 URL。

  • -s|--source <SOURCE>

    指定伺服器 URL。 NuGet 會識別 UNC 或本機資料夾來源,並直接複製該處的檔案,而不會使用 HTTP 推送檔案。

    重要

    自 NuGet 3.4.2 起,除非 NuGet 設定檔指定 DefaultPushSource 值,否則這是必要參數。 如需詳細資訊,請參閱設定 NuGet 行為 (部分機器翻譯)。

  • --skip-duplicate

    將多個套件推送至 HTTP(S) 伺服器時,系統會將所有 409 衝突回應視為警告,讓其他推送可以繼續進行。

  • -sk|--symbol-api-key <API_KEY>

    符號伺服器的 API 金鑰。

  • -ss|--symbol-source <SOURCE>

    指定符號伺服器 URL。

  • -t|--timeout <TIMEOUT>

    指定推送至伺服器的逾時 (以秒為單位)。 預設為 300 秒 (5 分鐘)。 若指定 0 (零秒),會套用預設值。

範例

  • 使用 API 金鑰將 foo.nupkg 推送至 NuGet 設定檔中指定的預設推送來源:

    dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a
    
  • foo.nupkg 推送至官方 NuGet 伺服器,並指定 API 金鑰:

    dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://api.nuget.org/v3/index.json
    
  • foo.nupkg 推送至自訂推送來源 https://customsource,指定 API 金鑰:

    dotnet nuget push foo.nupkg -k 4003d786-cc37-4004-bfdf-c4f3e8ef9b3a -s https://customsource/
    
  • foo.nupkg 推送至 NuGet 設定檔中指定的預設推送來源:

    dotnet nuget push foo.nupkg
    
  • foo.symbols.nupkg 推送至預設符號來源:

    dotnet nuget push foo.symbols.nupkg
    
  • foo.nupkg 推送至 NuGet 設定檔中指定的預設推送來源,並指定 360 秒為逾時:

    dotnet nuget push foo.nupkg --timeout 360
    
  • 將當前目錄中所有 .nupkg 檔案推送至 NuGet 設定檔中指定的預設推送來源:

    dotnet nuget push "*.nupkg"
    

    注意

    如果此命令無法運作,可能是舊版 SDK (.NET Core 2.1 SDK 及更舊版本) 中有 Bug 所致。 若要修正此問題,請升級您的 SDK 版本,或改為執行下列命令:dotnet nuget push "**/*.nupkg"

    注意

    如執行檔案萬用字元的 Bash 等殼層必須使用封閉式引號。 如需詳細資訊,請參閱 NuGet/Home#4393

  • 將所有 .nupkg 檔案推送至 NuGet 設定檔中指定的預設推送來源,即使 HTTP(S) 伺服器傳回 409 衝突回應也一樣:

    dotnet nuget push "*.nupkg" --skip-duplicate
    
  • 將當前目錄中所有 .nupkg 檔案推送至本機摘要目錄:

    dotnet nuget push "*.nupkg" -s c:\mydir
    
  • 若要推送至 Azure Artifacts,請參閱 Azure Artifacts 推送文件)。