一文了解Nuget的使用


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 密鑰
  1. 登錄你的 nuget.org 帳戶,或創建一個帳戶(如果你還沒有帳戶)。有關創建帳戶的詳細信息,請參閱個人帳戶。

  2. 選擇用戶名(在右上角),然后選擇“API 密鑰”。

  3. 選擇“創建” ,提供密鑰名稱,選擇“選擇范圍”>“推送” 。輸入“Glob 模式” *,然后選擇“創建” 。

  4. 創建密鑰后,選擇“復制”,檢索需要在 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM