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 推送文件)。