建立 NuGet 套件並擁有 .nupkg 檔案之後,您可以公開或私下將套件提供給其他開發人員。 本文說明如何透過 nuget.org 在全球範圍內共用公用套件。
您也可以將私人套件裝載在檔案共用、私人 NuGet 伺服器或第三方存放庫 (例如 myget、ProGet、Nexus 存放庫或 Artifactory) 上,讓私人套件僅供小組或組織使用。 如需詳細資訊,請參閱 裝載您自己的 NuGet 摘要。 如需使用 Azure Artifacts 發佈,請參閱 將套件發佈至 NuGet.org。
發佈至 nuget.org
若要在 nuget.org 上發佈,請使用 Microsoft 帳戶登入 nuget.org,並使用它來建立免費的 nuget.org 帳戶。 請遵循 新增個人帳戶中的指示。
擁有帳戶之後,您可以使用 nuget.org 入口網站、dotnet CLI 或 NuGet CLI 4.1.0 版或更新版本,將套件發佈至 nuget.org。 您也可以透過 Azure Pipelines 發佈套件。
上傳至 nuget.org 入口網站
若要將套件上傳至 nuget.org 網站:
在 nuget.org 的頂端功能表上選取 [上傳] ,瀏覽至電腦上的套件,然後選取 [ 開啟]。
如果 nuget.org 上已存在套件 ID,您會收到錯誤。 變更專案中的套件識別碼、重新封裝,然後重試上傳。
如果套件名稱可用,則會開啟 [驗證] 區段,以便您可以檢閱套件資訊清單中的中繼資料。 如果您在套件中包含 自述文件,請選取 預覽 以確保所有內容都能正確轉譯。
若要變更任何中繼資料,請編輯專案檔案或 .nuspec 檔案、重建、重新封裝,然後重新上傳。
當所有資訊都準備就緒時,請選取 [提交]。
使用命令行推送
若要使用命令列將套件推送至 nuget.org,您可以使用 dotnet.exe 或 nuget.exe v4.1.0 或更新版本,以實作必要的 NuGet 通訊協定。 如需詳細資訊,請參閱 NuGet 通訊協定。
若要使用任一命令列,您首先需要從 nuget.org 取得 API 金鑰。
建立 API 金鑰
登入您的 nuget.org 帳戶,或建立帳戶(如果您還沒有帳戶)。
選取右上角的使用者名稱,然後選取 API 金鑰。
選取 [建立],然後提供金鑰的名稱。
在 [選取範圍] 底下,選取 [推送]。
在 [選取套件>] 底下,輸入 *。
選取 ,創建。
選取 [複製] 以複製新金鑰。
這很重要
- 始終將您的 API 金鑰保密。 API 金鑰就像一個密碼,允許任何人代表您管理套件。 如果意外洩露了您的 API 金鑰,請刪除或重新產生它。
- 請將金鑰儲存在安全的位置,因為您以後無法再次複製金鑰。 如果您返回 API 金鑰頁面,則需要重新產生金鑰才能複製它。 如果您不想再推送套件,也可以移除 API 金鑰。
範圍界定可讓您為不同目的建立個別的 API 金鑰。 每個金鑰都有到期時間範圍,您可以將金鑰限定為特定套件或 glob 模式。 您也可以將每個金鑰的範圍定義為特定作業:推送新套件和套件版本、僅限推送新套件版本,或將其取消列出。
透過範圍設定,您可以為管理組織套件的不同人員建立 API 金鑰,以便他們只擁有所需的權限。
如需詳細資訊,請參閱 限定範圍的 API 金鑰。
使用 dotnet CLI
從包含 .nupkg 檔案的資料夾中,執行下列命令。 指定您的 .nupkg 檔案名稱,並將索引鍵值取代為您的 API 金鑰。
dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
輸出會顯示發佈程序的結果:
Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.
如需詳細資訊,請參閱 dotnet nuget push。
備註
如果要避免測試套件在 nuget.org 上上線,可以推送到 nuget.org 測試站點 https://int.nugettest.org。請注意,上傳至 int.nugettest.org 的套件可能不會保留。
使用 NuGet CLI
在命令提示字元中,執行下列命令,並取代
<your_API_key>為您從 nuget.org 取得的金鑰:nuget setApiKey <your_API_key>此命令會將您的 API 金鑰儲存在 NuGet 設定中,因此您不需要在同一部電腦上再次輸入 API 金鑰。
備註
此 API 金鑰不會用於使用私人摘要進行驗證。 若要管理認證以使用這些來源進行驗證,請參閱 nuget sources 命令。
請使用以下命令來推送套件。
nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
使用 Azure Pipelines 發佈
您可以在持續整合/持續部署 (CI/CD) 程式中,使用 Azure Pipelines 將套件推送至 nuget.org。 如需詳細資訊,請參閱 使用 Azure Pipelines 發佈 NuGet 套件。
發佈已簽署的套件
若要提交已簽署的套件,您必須先註冊用來簽署套件的 憑證 。 如果您不符合 已簽署的套件需求,nuget.org 會拒絕套件。
包裹大小限制
Nuget.org 的包大小限制約為 250 MB。 上傳超過該限制的套件時,會顯示下列錯誤:
套件檔案超出大小限制。 請重試。
如果從命令列推送這類套件,則會產生下列輸出:
RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).
如果您收到此錯誤,請考慮修改套件內容以減小其大小。 如果您要將偵錯符號封裝到套件中,請考慮 單獨發佈它們。 其他資產可以單獨發佈為一或多個相依性套件,以將它們分散成較小的區塊。
套件驗證和索引
推送至 nuget.org 的套件會經過數次驗證,例如病毒檢查,並定期掃描現有套件。 當套件通過所有驗證檢查時,可能需要一段時間才能編製索引並出現在搜尋結果中。 當套件建立索引時,它會出現在 [未列出的套件] 底下,您會在套件頁面上看到下列訊息:
驗證和索引完成後,您會收到一封電子郵件,指出套件已成功發佈。 如果套件未通過驗證檢查,套件頁面會更新以顯示相關聯的錯誤,而且您會收到通知電子郵件。
套件驗證和索引通常需要不到 15 分鐘的時間。 如果套件發佈時間比預期長,請在 status.nuget.org 檢查 nuget.org 狀態。如果所有系統都正常運作,且套件未在一小時內成功發佈,請使用套件頁面上的 連絡支援 連結聯絡 nuget.org。
若要查看套件狀態,請選取 nuget.org 右上角帳戶名稱下的 [管理套件] ,然後從 [已發佈的套件 ] 或 [未列出的套件] 中選取套件。
管理 nuget.org 上的套件擁有者
套件擁有者擁有套件的完整權限,包括新增和移除其他擁有者,以及發佈更新。
雖然 NuGet 套件的 .nuspec 檔案會定義套件的作者,但 nuget.org 不會使用該中繼資料來定義擁有權。 相反地,nuget.org 會將擁有權指派給發佈套件的人員,也可以是上傳套件的登入使用者,或其 API 金鑰與 dotnet push、 nuget SetApiKey或 nuget push一起使用的使用者。
若要變更套件的擁有權:
使用目前擁有套件的帳戶登入 nuget.org。
選取右上角的帳戶名稱,選取 [管理套件],然後展開 [已發佈的套件]。
選取您要管理的套件,然後在套件頁面的右側選取 [管理套件]。
在套件管理頁面上,選取 [擁有者]。
執行下列其中一項動作:
選取 [移除] 以移除目前的擁有者。
在 [新增擁有者] 底下新增擁有者,方法是輸入其使用者名稱和訊息,然後選取 [新增]。
此動作會傳送電子郵件給新的共同擁有者,其中包含確認連結。 確認後,該人員將擁有新增和移除擁有者的完整權限。 在確認之前,目前擁有者 區段會顯示該人員的待審核狀態。
若要轉移擁有權,例如當擁有權變更或套件在錯誤的帳戶下發佈時,請新增擁有者。 確認擁有權後,他們就可以從清單中移除舊擁有者。
如要將擁有權指派給公司或群組,請建立一個 nuget.org 帳戶,其中包含轉寄給適當團隊成員的電子郵件別名。 例如,各種Microsoft ASP.NET 套件是由 Microsoft 和 aspnet 帳戶共同擁有。
有時候,套件可能沒有活躍的擁有者。 例如,原始擁有者可能已離開生產套件的公司。 如果您是套件的合法擁有者,而且需要重新取得擁有權,請使用 nuget.org 上的 連絡表單 ,向 NuGet 小組說明您的情況。 團隊會遵循程序來驗證您的擁有權,包括嘗試尋找現有擁有者,並可以傳送新邀請給您成為套件擁有者。