Nuget介紹
官網定義:NuGet是.NET的軟件包管理器(免費)。NuGet客戶端工具提供了生成和使用軟件包的能力。NuGet Gallery 是所有軟件包作者和消費者都使用的中央軟件包存儲庫。
簡單來說,nuget包解決了dll引用的問題,開發者可以通過打包,然后發布到公有主機或者私有主機上,供其他開發者使用。可以大大的提高創建一個.NET應用的效率。
想了解平時安裝的nuget包,是如何產生的。需要了解幾個角色。
-
創建者:包的作者,創建一個項目,最終生成一個后綴名為.nupkg的文件,里面包含了編譯代碼DLL、與該代碼相關的其他文件以及描述清單如版本等信息。
-
Host 主機:nuget.org 作為公共主機,如果你也想發布一個包,供所有開發者使用的話,可以選擇它。NuGet 自身負責在 nuget.org 中維護包含 100,000 多個唯一包的中央存儲庫。這些包每天供數以百萬的 .NET/.Net Core 開發人員使用。私有主機上,比如團隊內部幾個人可以訪問。
-
消費者:很好理解,就是我們從nuget獲取包的開發者。
簡單的總結下這幾個角色的關系:創建者創建一個nuget包,並發布到主機上。然后使用者在可訪問的主機上搜索安裝nuget包到項目中,這樣項目就可以利用包提供的功能。如圖
工具的選擇
目前提供的工具還是挺豐富的,下文使用dotnet CLI ,你也可以選擇任意你習慣的工具
打包
准備工作,創建一個類庫並命名為AA.Nlog。
1.配置包元數據 ,右鍵項目-》屬性
在.csproj文件中,我們發現添加了一下屬性:
<PropertyGroup> <TargetFrameworks>net452;netstandard2.0</TargetFrameworks> <Description>支持 NLog</Description> <PackageProjectUrl>https://github.com/ChengLab/AAFrameWork</PackageProjectUrl> <RepositoryType>git</RepositoryType> <PackageTags>NLog</PackageTags> <RepositoryUrl>https://github.com/ChengLab/AAFrameWork</RepositoryUrl> <GeneratePackageOnBuild>false</GeneratePackageOnBuild> </PropertyGroup>
如果勾選了在版本中生成Nuget包選項框,則生成項目時會自動生成nuget包;包ID:是唯一的標識,用戶搜索和使用就是通過包ID。包版本:會自動根據程序集版本生成,如果要更新包,只需要把版本號改大點即可。其他信息可以自行填寫。
2.從項目中 生成nuget包(.nupkg文件),運行pack命令如下:
dotnet pack
nuget包已經生成了,什么是nupkg文件?.nuspec文件是包含程序包元數據的XML清單。此清單可用於構建包裝並向消費者提供信息。清單始終包含在包裝中。可以在微軟文檔中(https://docs.microsoft.com/en-us/nuget/reference/nuspec)找到有關nuspec的更多詳細信息
發布包到公共Host
創建 API 密鑰
-
登錄你的 nuget.org 帳戶,或創建一個帳戶(如果你還沒有帳戶)。有關創建帳戶的詳細信息,請參閱個人帳戶。
-
選擇用戶名(在右上角),然后選擇“API 密鑰”。
-
選擇“創建” ,提供密鑰名稱,選擇“選擇范圍”>“推送” 。輸入“Glob 模式” *,然后選擇“創建” 。
-
創建密鑰后,選擇“復制”,檢索需要在 CLI 中使用的訪問密鑰 :
使用dotnet CLI 發布nuget包
-
運行命令,指定包名稱(唯一包 ID)並使用你的 API 密鑰替換密鑰值:
dotnet nuget push AA.NLog.1.0.0.nupkg -k qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 -s https://api.nuget.org/v3/index.json
-
發布過程結果
info : 正在將 AA.NLog.1.0.0.nupkg 推送到 'https://www.nuget.org/api/v2/package'... info : PUT https://www.nuget.org/api/v2/package/ warn : All published packages should have license information specified. Learn more: https://aka.ms/deprecateLicenseUrl. info : Created https://www.nuget.org/api/v2/package/ 2854 毫秒 info : 已推送包。
這里 -k 代表API密鑰, -s 代表源。在我們的例子中,源是nuget.org
我們登錄到nuget.org查看我們的軟件包:
可以進行管理,發布之后,稍等幾分鍾會在nuget.org中進行搜索到
在vs中瀏覽我們的nuget軟件包
管理nuget程序包->搜索我們剛發布的軟件包,AA.Nlog。
如上圖所示,該軟件包已經可以使用。
希望這篇文章可以對你有所幫助!
參考:https://docs.microsoft.com/zh-cn/nuget/what-is-nuget