發行套件

建立套件且具有 .nupkg 檔案之後,只要透過簡單的流程,其他開發人員就能使用此套件 (不論公開或私用):

  • 如本文中所述,所有開發人員都可以透過 nuget.org 全域使用公用套件 (需要 NuGet 4.1.0+)。
  • 私用套件僅適用於小組或組織,方法是將它們裝載在檔案共用、私用 NuGet 伺服器、Azure Artifacts 協力廠商存放庫 (例如 myget、ProGet、Nexus Repository 和 Artifactory)。 如需其他詳細資料,請參閱裝載套件概觀

此文章涵蓋發行至 nuget.org 的方法;若要發行至 Azure Artifacts,請參閱套件管理

發行至 nuget.org

對於 nuget.org,您必須使用 Microsoft 帳戶登入,之後會要求您使用該帳戶註冊 nuget.org 的帳戶。

NuGet 登入位置

接下來,您可以透過 nuget.org Web 入口網站上傳套件、從命令列推送至 nuget.org (需要 nuget.exe 4.1.0+),或透過 Azure DevOps Services 在 CI/CD 流程期間發行,如下列各節中所述。

Web 入口網站:使用 nuget.org 上的 [Upload Package] \(上傳套件\) 索引標籤

  1. 在 nuget.org 的上方功能表中選取 [上傳],並瀏覽至套件位置。

    在 nuget.org 上上傳套件

  2. nuget.org 會告訴您該套件名稱是否可用。 如果不可使用,請在您專案中變更套件識別碼、重建,並再次嘗試上傳。

  3. 如果套件名稱可用,nuget.org 會開啟 [確認] 區段,您可在其中檢閱套件資訊清單的中繼資料。 如果您在套件中包含 讀我檔案 ,請查看預覽,以確定所有內容都能正確轉譯。 若要變更任何中繼資料,請編輯您的專案 (專案檔或 .nuspec 檔案)、重建、重新建立套件,然後再次上傳。

  4. 當所有資訊準備就緒時,請選取 [提交] 按鈕

命令列

若要將套件推送至 nuget.org,您需要先在 nuget.org 上建立 API 金鑰。您必須使用 dotnet.exe ( .net Core) 或 nuget.exe v 4.1.0 或更新版本,以執行所需的 NuGet 通訊協定。 如需詳細資訊,請參閱.net Corenuget.exeNuGet 的通訊協定

建立 API 金鑰

  1. 登入 nuget.org 帳戶 \(英文\),或者,如果您還沒有帳戶,則建立一個帳戶。

    如需有關建立帳戶的詳細資訊,請參閱個人帳戶

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

  3. 選取 [ 建立],為您的金鑰提供名稱,選取 [ 選取範圍 播]。 針對 [Glob 模式] 輸入 *,然後選取 [建立]。 (如需範圍的詳細資訊,請參閱下方)。

  4. 建立金鑰之後,選取 [複製] 以擷取 CLI 中您需要的存取金鑰:

    將 API 金鑰複製到剪貼簿

警告

一律將您的 API 金鑰保持為秘密! 將您的 API 金鑰視為密碼,讓任何人都能代表您管理套件。 如果不小心顯示您的 API 金鑰,您應該刪除或重新產生它。

重要

將您的金鑰儲存在安全的位置,因為您稍後就無法再次複製此金鑰。 如果您返回 API 金鑰頁面,則需要重新產生金鑰才能加以複製。 如果您不想再推送套件,也可以移除 API 金鑰。

設定範圍可讓您針對不同用途建立個別的 API 金鑰。 每個金鑰都有其到期的時間範圍,且可將範圍設定為特定套件 (或 Glob 模式)。 每個金鑰也可將範圍設定為特定作業:新套件和更新的推送、僅更新的推送,或取消列入。 透過設定範圍,您就可針對組織中管理套件的不同人員建立 API 金鑰,讓他們只具有所需的權限。 如需詳細資訊,請參閱限定範圍的 API 金鑰

使用 dotnet nuget push 發行

  1. 變更為包含 .nupkg 檔案的資料夾。

  2. 執行下列命令,指定套件名稱 (使用套件識別碼) 並使用您的 API 金鑰來取代金鑰值:

    dotnet nuget push AppLogger.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
    
  3. dotnet 會顯示發行程序的結果:

    info : Pushing AppLogger.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
    info :   PUT https://www.nuget.org/api/v2/package/
    info :   Created https://www.nuget.org/api/v2/package/ 12620ms
    info : Your package was pushed.
    

請參閱 dotnet nuget push

使用 nuget push 發行

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

    nuget setApiKey <your_API_key>
    

    此命令會將您的 API 金鑰儲存在 NuGet 設定中,如此一來,您就不需要在同一部電腦上再次重複此步驟。

    注意

    API 金鑰不會用來向私人摘要進行驗證。 請參閱 命令來管理用來驗證來源的認證。 您可以從個別 NuGet 伺服器取得 API 金鑰。 若要建立和管理 >apikeys.cs for nuget.org,請參閱 建立 API 金鑰

  2. 使用下列命令,將套件推送至 NuGet 資源庫:

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

發行已簽署的套件

若要提交已簽署的套件,必須先註冊用來簽署套件的憑證

警告

nuget.org 會拒絕不符合簽署的套件需求的套件。

套件驗證和編製索引

推送至 nuget.org 的套件會歷經數次驗證,例如病毒檢查。 (nuget.org 上的所有套件都會定期掃描)。

套件通過所有驗證檢查時,可能需要一些時間進行編製索引,並顯示在搜尋結果中。 編製索引完成之後,您會收到一封電子郵件,確認已成功發行套件。 如果套件讓驗證檢查失敗,則會更新套件詳細資料頁面以顯示相關聯的錯誤,而且您也會收到一封電子郵件通知您有關該錯誤。

套件驗證和編製索引通常在 15 分鐘內完成。 如果套件發佈所需的時間超出預期,請前往 status.nuget.org,以檢查 nuget.org 是否發生任何中斷。 如果所有系統都可以正常運作,但未在一個小時內成功發佈套件,請登入 nuget.org,並使用套件頁面上的 [連絡客戶支援] 連結與我們連絡。

若要查看套件的狀態,請在 nuget.org 上選取 [管理您的帳戶名稱下的 封裝 ]。驗證完成時,您會收到確認電子郵件。

請注意,您的套件進行編製索引可能需要一些時間,並顯示在其他人可以找到它的搜尋結果中;在這段期間,您會在套件頁面上看到下列訊息:

指出套件尚未發行的訊息

Azure DevOps Services (CI/CD)

如果您在持續整合/部署處理序期間,使用 Azure DevOps Services 將套件推送至 nuget.org,則必須在 NuGet 工作中使用 nuget.exe 4.1 或以上版本。 在於您的組建中使用最新的 NuGet (Microsoft DevOps blog) 上可以找到詳細資料。

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

雖然每個 NuGet 套件的 .nuspec 檔案都會定義套件的作者,所以 nuget.org 資源庫不會使用該中繼資料來定義擁有權。 相反地,nuget.org 會將初始擁有權指派給發行套件的人員。 這是已透過 nuget.org UI 上傳套件的已登入使用者,或已搭配使用其 API 金鑰與 nuget SetApiKeynuget push 的使用者。

所有套件擁有者都具有套件的完整權限,包含新增和移除其他擁有者,以及發行更新。

若要變更套件的擁有權,請執行下列動作:

  1. 使用套件之目前擁有者的帳戶來登入 nuget.org。
  2. 選取您的帳戶名稱,選取 [管理套件],然後展開 [已發行的套件]
  3. 選取您要管理的套件,然後在右側選取 [管理擁有者]

在這裡,您有數個選項:

  1. 移除 [目前擁有者] 底下所列的所有擁有者。
  2. 在 [新增擁有者]下,透過輸入其使用者名稱、訊息,並選取 [新增] 來新增擁有者。 此動作會將含有確認連結的電子郵件傳送給這個新的共同擁有者。 確認之後,該人員具有新增和移除擁有者的完整權限 (確認之後,[目前擁有者] 區段會指出該人員等待核准。)
  3. 若要移轉擁有權 (擁有權變更時,或透過錯誤的帳戶發行套件之後),請新增擁有者,而且在確認擁有權之後,即可從清單中將您移除。

若要將擁有權指派給公司或群組,請使用轉寄給適當小組成員的電子郵件別名來建立 nuget.org 帳戶。 例如,各種 Microsoft ASP.NET 套件都是由 microsoftaspnet 帳戶共同擁有,這可簡化這類別名。

復原套件擁有權

套件有時可能沒有作用中的擁有者。 例如,原始擁有者可能已經離開產生套件的公司、遺失 nuget.org 認證,或資源庫中的更早 Bug 讓套件變成無擁有者。

如果您是套件的合法擁有者,而且需要重新獲得擁有權,請使用 nuget.org 上的連絡表,向 NuGet 小組說明您的情況。 我們接著會遵循確認套件擁有權的程序,包含嘗試透過套件的專案 URL、Twitter、電子郵件或其他方式找出現有擁有者。 但是,如果全部都失敗,則我們可以傳送給您成為擁有者的新邀請。