快速入門:建立及發佈套件 (dotnet CLI)
使用 dotnet
命令列介面 (CLI) 從 .NET 類別庫建立 NuGet 套件,並將它發行到 nuget.org 是個簡單的程序。
必要條件
安裝 .NET Core SDK,其中包括
dotnet
CLI。 從 Visual Studio 2017 開始,dotnet CLI 會自動與任何 .NET Core 相關工作負載一起安裝。如果您還沒有帳戶,請在 nuget.org 上註冊一個免費帳戶 \(英文\)。 建立新的帳戶會傳送一封確認電子郵件。 您必須確認帳戶,才可以上傳套件。
建立類別庫專案
您可以針對要封裝的程式碼使用現有的 .NET 類別庫專案,或建立一個簡單的專案,如下所示:
建立一個名為
AppLogger
的資料夾。開啟命令提示字元並切換至
AppLogger
資料夾。輸入
dotnet new classlib
,它會針對專案使用目前資料夾的名稱。這會建立新的專案。
將套件中繼資料新增至專案檔
每個 NuGet 套件都需要資訊清單來描述套件的內容和相依性。 在最後一個套件中,資訊清單是一個 .nuspec
檔案,這是從您納入專案檔中的 NuGet 中繼資料屬性所產生的檔案。
開啟您的專案檔 (
.csproj
,.fsproj
或.vbproj
視您使用的語言而定) ,並在現有<PropertyGroup>
標籤內新增下列最小屬性,視需要變更值:<PackageId>AppLogger</PackageId> <Version>1.0.0</Version> <Authors>your_name</Authors> <Company>your_company</Company>
重要
為套件指定識別碼,此識別碼在 nuget.org 上或您使用的任何主機上都必須是唯一的。 針對此逐步解說,我們建議在名稱中包含 "Sample" 或 "Test" (如同稍後發行步驟所做的),讓套件能夠成為公開可見的 (儘管實際上不太可能會有人使用它)。
新增任何選擇性的屬性,如 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 金鑰
登入 nuget.org 帳戶 \(英文\),或者,如果您還沒有帳戶,則建立一個帳戶。
如需有關建立帳戶的詳細資訊,請參閱個人帳戶。
選取您的使用者名稱 (在右上方),然後選取 [API 金鑰]。
選取 [建立],為您的金鑰提供名稱,然後選取 [選取範圍 > 推送]。 針對 [Glob 模式] 輸入 *,然後選取 [建立]。 (如需範圍的詳細資訊,請參閱下方)。
建立金鑰之後,選取 [複製] 以擷取 CLI 中您需要的存取金鑰:
警告
請一律讓您的 API 金鑰保持秘密! 將您的 API 金鑰視為密碼,可讓任何人代表您管理套件。 如果意外顯示 API 金鑰,您應該刪除或重新產生 API 金鑰。
重要
將您的金鑰儲存在安全的位置,因為您稍後就無法再次複製此金鑰。 如果您返回 API 金鑰頁面,則需要重新產生金鑰才能加以複製。 如果您不想再推送套件,您也可以移除 API 金鑰。
設定範圍可讓您針對不同用途建立個別的 API 金鑰。 每個金鑰都有其到期的時間範圍,且可將範圍設定為特定套件 (或 Glob 模式)。 每個金鑰也可將範圍設定為特定作業:新套件和更新的推送、僅更新的推送,或取消列入。 透過設定範圍,您就可針對組織中管理套件的不同人員建立 API 金鑰,讓他們只具有所需的權限。 如需詳細資訊,請參閱限定範圍的 API 金鑰。
使用 dotnet nuget push 發行
變更為包含
.nupkg
檔案的資料夾。執行下列命令,指定套件名稱 (使用套件識別碼) 並使用您的 API 金鑰來取代金鑰值:
dotnet nuget push AppLogger.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
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 上的設定檔中,選取 [ 管理套件 ] 以查看您剛才發佈的套件。 您也會收到確認電子郵件。 請注意,可能需要一些時間才會編製套件的索引,並顯示在其他人可以找到它的搜尋結果中。 在這段期間,套件頁面會顯示下列訊息:
這樣就大功告成了! 您剛剛已將第一個 NuGet 套件發行至 nuget.org,其他開發人員可以在他們自己的專案中使用它。
如果您在本逐步解說中建立的套件不是真的很實用 (例如,使用空類別庫建立的套件),則您應該「取消列出」該套件,以便在搜尋結果中加以隱藏:
在 nuget.org,選取您的使用者名稱 (頁面右上方),然後選取 [管理套件]。
在 [已發行] 下方找出您想要取消列出的套件,然後選取右邊的資源回收筒圖示:
在後續頁面上,清除標籤為 [在搜尋結果中列出 (package-name)] 的方塊,然後選取 [儲存]:
相關影片
在Channel 9和YouTube上尋找更多NuGet影片。
下一步
恭喜,您建立了您的第一個 NuGet 套件!
若要深入探索 NuGet 所提供的功能,請選取下列連結。