發佈 NuGet 套件

建立 NuGet 套件並擁有 .nupkg 檔案之後,您可以公開或私下讓其他開發人員使用套件。 本文說明如何透過 nuget.org 全域共用公用套件。

您也可以將私人套件裝載在檔案共用、私人 NuGet 伺服器或第三方存放庫,例如 myget、ProGet、Nexus 存放庫或 Artifactory,讓私人套件只提供給小組或組織使用。 如需詳細資訊,請參閱 裝載您自己的 NuGet 摘要。 若要使用 Azure Artifacts 發佈,請參閱 將套件發佈至 NuGet.org

發行至 nuget.org

若要在 nuget.org 上發佈,請使用 Microsoft 帳戶登入 nuget.org,並使用它來建立免費的 nuget.org 帳戶。 請依照新增個別帳戶中的指示操作。

Screenshot that shows the NuGet sign in link.

擁有帳戶之後,您可以使用 nuget.org 入口網站、dotnet CLI 或 NuGet CLI 4.1.0 版或更新版本,將套件發佈至 nuget.org。 您也可以透過 Azure Pipelines 發佈套件。

上傳至 nuget.org 入口網站

若要將套件上傳至 nuget.org 網站:

  1. 選取 頂端功能表上的 [上傳 ] nuget.org,流覽至計算機上的套件,然後選取 [ 開啟]。

    Screenshot that shows the Upload dialog on nuget.org

    如果套件識別碼已存在於 nuget.org 上,您會收到錯誤。 變更專案中的套件標識碼、重新封裝,然後再試一次上傳。

  2. 如果套件名稱可用,[ 驗證 ] 區段隨即開啟,以便檢閱套件指令清單中的元數據。 如果您在 套件中包含自述檔 ,請選取 [預覽 ] 以確保所有內容都正確轉譯。

    若要變更任何元數據,請編輯您的項目檔或 .nuspec 檔案、重建、重新封裝,然後再次上傳。

  3. 當所有資訊都就緒時,請選取 [ 提交]。

使用命令行推送

若要使用命令行將套件推送至 nuget.org,您可以使用 dotnet.exenuget.exe v4.1.0 或更新版本,以實作必要的 NuGet 通訊協定。 如需詳細資訊,請參閱 NuGet 通訊協定

若要使用任一命令行,您必須先從 nuget.org 取得 API 金鑰。

建立 API 金鑰

  1. 登入您的 nuget.org 帳戶,或如果您還沒有帳戶,請建立帳戶

  2. 選取右上方的使用者名稱,然後選取 [API 金鑰]。

  3. 選取 [ 建立],並提供密鑰的名稱。

  4. 在 [選取範圍],選取 [推送]。

  5. 在 [選取套件>Glob 模式] 下,輸入 *。

  6. 選取 建立

  7. 選取 [ 複製 ] 以複製新的金鑰。

    Screenshot that shows the new API key with the Copy link.

重要

  • 一律將您的 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

  1. 在命令提示字元中,執行下列命令,將 <your_API_key> 取代為您從 nuget.org 取得的密鑰:

    nuget setApiKey <your_API_key>
    

    此命令會將 API 金鑰儲存在 NuGet 設定中,因此您不需要在同一部電腦上再次輸入 API 金鑰。

    注意

    此 API 金鑰不會用來向私人摘要進行驗證。 若要管理向這些來源進行驗證的認證,請參閱 nuget sources 命令

  2. 使用下列命令推送套件:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

使用 Azure Pipelines 發佈

您可以將套件推送至使用 Azure Pipelines nuget.org,作為持續整合/持續部署 (CI/CD) 程式的一部分。 如需詳細資訊,請參閱 使用 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 的套件會經過數個驗證,例如病毒檢查,以及定期掃描現有的套件。 當套件通過所有驗證檢查時,可能需要一些時間才能編製索引並出現在搜尋結果中。 當封裝編製索引時,它會出現在 [未列出的套件] 底下,而且您會在套件頁面上看到下列訊息:

Screenshot of a message indicating that a package isn't yet published.

驗證和編製索引完成後,您會收到成功發佈套件的電子郵件。 如果套件失敗驗證檢查,套件頁面會更新以顯示相關聯的錯誤,而且您會收到通知電子郵件。

套件驗證和編製索引通常需要不到 15 分鐘的時間。 如果套件發佈花費的時間超過預期,請檢查 status.nuget.org nuget.org 狀態。如果所有系統都正常運作,且套件未在一小時內成功發佈,請使用套件頁面上的 [連絡支援] 連結,連絡 nuget.org。

若要查看套件狀態,請選取 nuget.org 右上方帳戶名稱下的 [管理套件 ],然後從 [已發佈的套件 ] 或 [未列出的套件] 中選取套件。

管理 nuget.org 上的套件擁有者

套件擁有者擁有套件的完整許可權,包括新增和移除其他擁有者及發佈更新。

雖然 NuGet 套件的 .nuspec 檔案會定義套件的作者,但 nuget.org 不會使用該元數據來定義擁有權。 相反地,nuget.org 將擁有權指派給發佈套件的人員、上傳套件的登入使用者,或是 API 金鑰搭配 dotnet pushnuget SetApiKeynuget push使用的使用者。

若要變更套件的擁有權:

  1. 使用目前擁有套件的帳戶登入 nuget.org。

  2. 選取右上角的您的帳戶名稱,選取 [管理套件],然後展開 [ 已發佈套件]。

  3. 選取您要管理的套件,然後在套件頁面右側,選取 [ 管理套件]。

  4. 在套件管理頁面上,選取 [ 擁有者]。

  5. 執行下列其中一項動作:

    • 選取 [移除 ] 以移除目前的擁有者。

    • 輸入其使用者名稱和訊息,然後選取 [新增],在 [新增擁有者] 底下新增擁有者

      此動作會傳送電子郵件給具有確認連結的新共同擁有者。 確認之後,該人員具有新增和移除擁有者的完整權限 在確認之前, [目前擁有者 ] 區段會顯示該人員的擱置核准。

若要轉移擁有權,當擁有權變更或套件在錯誤的帳戶下發佈時,請新增擁有者。 一旦他們確認擁有權,就可以從清單中移除舊的擁有者。

若要將擁有權指派給公司或群組,請使用電子郵件別名建立 nuget.org 帳戶,該別名會轉寄給適當的小組成員。 例如,microsoft 和 aspnet 帳戶共同擁有各種 Microsoft ASP.NET 套件。

有時候,套件可能沒有作用中的擁有者。 例如,原始擁有者可能已離開產生封裝的公司。 如果您是套件的正確擁有者,且需要重新取得擁有權,請使用 nuget.org 上的聯繫人窗體 向 NuGet 小組說明您的情況。 小組會遵循一個程式來驗證您的擁有權,包括嘗試找出現有的擁有者,並可以傳送新的邀請來成為套件擁有者。

下一步