快速入門:建立及發佈套件 (dotnet CLI)

使用 dotnet 命令列介面 (CLI) 從 .NET 類別庫建立 NuGet 套件,並將它發行到 nuget.org 是個簡單的程序。

必要條件

  1. 安裝 .NET Core SDK,其中包括 dotnet CLI。 從 Visual Studio 2017 開始,dotnet CLI 會自動與任何 .NET Core 相關工作負載一起安裝。

  2. 如果您還沒有帳戶,請在 nuget.org 上註冊一個免費帳戶 \(英文\)。 建立新的帳戶會傳送一封確認電子郵件。 您必須確認帳戶,才可以上傳套件。

建立類別庫專案

您可以針對要封裝的程式碼使用現有的 .NET 類別庫專案,或建立一個簡單的專案,如下所示:

  1. 建立一個名為 AppLogger 的資料夾。

  2. 開啟命令提示字元並切換至 AppLogger 資料夾。

  3. 輸入 dotnet new classlib,它會針對專案使用目前資料夾的名稱。

    這會建立新的專案。

將套件中繼資料新增至專案檔

每個 NuGet 套件都需要資訊清單來描述套件的內容和相依性。 在最後一個套件中,資訊清單是一個 .nuspec 檔案,這是從您納入專案檔中的 NuGet 中繼資料屬性所產生的檔案。

  1. 開啟您的專案檔 (.csproj.fsproj.vbproj 視您使用的語言而定) ,並在現有 <PropertyGroup> 標籤內新增下列最小屬性,視需要變更值:

    <PackageId>AppLogger</PackageId>
    <Version>1.0.0</Version>
    <Authors>your_name</Authors>
    <Company>your_company</Company>
    

    重要

    為套件指定識別碼,此識別碼在 nuget.org 上或您使用的任何主機上都必須是唯一的。 針對此逐步解說,我們建議在名稱中包含 "Sample" 或 "Test" (如同稍後發行步驟所做的),讓套件能夠成為公開可見的 (儘管實際上不太可能會有人使用它)。

  2. 新增任何選擇性的屬性,如 NuGet 中繼資料屬性中所述。

    注意

    針對公眾取用而建置的套件,請特別注意 PackageTags 屬性,因為標籤可協助其他人找到您的套件,並了解其用途。

執行 pack 命令

若要從專案建置 NuGet 套件 (.nupkg 檔案),請執行 dotnet pack 命令,該命令也會自動建置專案:

# Uses the project file in the current folder by default
dotnet pack

輸出將顯示 .nupkg 檔案的路徑:

Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 29.91 ms for D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj.
  AppLogger -> D:\proj\AppLoggerNet\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll
  Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'.

建置時自動產生套件

若要在您執行 dotnet build 時自動執行 dotnet pack,請將下列程式行加入專案檔的 <PropertyGroup> 中:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

發行套件

一旦擁有 .nupkg 檔案之後,您會使用 dotnet nuget push 命令以及從 nuget.org 取得的 API 金鑰,將它發行到 nuget.org。

注意

病毒掃描:會掃描所有上傳至 nuget.org 的套件是否有病毒,並在發現任何病毒時予以拒絕。 也會定期掃描 nuget.org 上列出的所有套件。

除非您取消列出已發行至 nuget.org 的套件,否則也會向其他開發人員公開顯示這些套件。 若要私下裝載套件,請參閱裝載套件

取得 API 金鑰

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

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

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

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

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

    Copying the API key to the clipboard

警告

請一律讓您的 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

發行錯誤

來自 push 命令的錯誤通常代表發生問題。 例如,您可能忘記更新專案中的版本號碼,因而嘗試發行已經存在的套件。

當您嘗試使用主機上已經存在的識別碼來發行套件時,也會看到錯誤。 例如,名稱 "AppLogger" 已經存在。 在這種情況下,push 命令會產生下列錯誤:

Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).

如果您使用剛建立的有效 API 金鑰,則此訊息表示命名衝突,這無法從錯誤的「權限」部分中完全清除。 請變更套件識別碼、重新建置專案、重新建立 .nupkg 檔案,然後重試 push 命令。

管理已發行的套件

從 nuget.org 上的設定檔中,選取 [ 管理套件 ] 以查看您剛才發佈的套件。 您也會收到確認電子郵件。 請注意,可能需要一些時間才會編製套件的索引,並顯示在其他人可以找到它的搜尋結果中。 在這段期間,套件頁面會顯示下列訊息:

This package has not been indexed yet. It will appear in search results and will be available for install/restore after indexing is complete.

這樣就大功告成了! 您剛剛已將第一個 NuGet 套件發行至 nuget.org,其他開發人員可以在他們自己的專案中使用它。

如果您在本逐步解說中建立的套件不是真的很實用 (例如,使用空類別庫建立的套件),則您應該「取消列出」該套件,以便在搜尋結果中加以隱藏:

  1. 在 nuget.org,選取您的使用者名稱 (頁面右上方),然後選取 [管理套件]

  2. 在 [已發行] 下方找出您想要取消列出的套件,然後選取右邊的資源回收筒圖示:

    Trash can icon shown for a package listing on nuget.org

  3. 在後續頁面上,清除標籤為 [在搜尋結果中列出 (package-name)] 的方塊,然後選取 [儲存]

    Clearing the List checkbox for a package on nuget.org

Channel 9YouTube上尋找更多NuGet影片。

下一步

恭喜,您建立了您的第一個 NuGet 套件!

若要深入探索 NuGet 所提供的功能,請選取下列連結。