在包管理之前咱們在項目中引用第三方包一般是去下載dll放到項目中再引用,後來逐漸發展成各類包管理工具,nuget就是一種工具,適用於任何現代開發平臺的基本工具可充當一種機制,經過這種機制,開發人員能夠建立、共享和使用有用的代碼。 一般,此類代碼捆綁到「包」中,其中包含編譯的代碼(如 DLL)以及在使用這些包的項目中所需的其餘內容。
Linux 咱們可使用apt、yum來安裝軟件,js 可使用npm來搭建下載,Java 有maven管理包,而對於.net nuget就是一樣效果和機制的工具。html
要使用 NuGet,做爲軟件包使用者或建立者,可使用命令行接口 (CLI) 工具以及 Visual Studio 中的 NuGet 功能。npm
CLI工具可使用 dotnet CLI 或 nuget.exe CLI。json
dotnet CLI 隨某些 Visual Studio 工做負載一塊兒安裝,例如 .NET Core 。從 Visual Studio 2017 開始dotnet CLI 將自動隨任何與 .NET Core 相關的工做負載一塊兒安裝。
dotnet CLI 適用於 .NET Core 和 .NET Standard 項目(SDK 樣式的項目類型),以及任何其餘 SDK 樣式項目(例如,面向 .NET Framework 的 SDK 樣式項目)
也就是說安裝VS的時候會自動包含在工做負載中,對於.net 5 也能夠直接安裝.NET SDK,如以前.net 知新:【1】 .Net 5 基本概念文章介紹中能夠看到.NET SDK是包含了CLI的。
而對於.NET Framework(僅限非 SDK 樣式項目),使用 nuget.exe CLI。這種方式如今基本不使用,由於咱們通常不會去單獨安裝,都是安裝VS後直接使用就好了,除非你還在使用Visual Studio 2017 之前的版本。api
至於他們有什麼區別呢?網絡
第一個是之前.NET Framework時期使用包管理的方式是使用單獨的 packages.config 文件進行管理。maven
可是不建議使用packages.config,.NET Framework能夠在VS中右鍵點擊packages.config遷移到PackageReference。工具
如今.net 5的項目默認使用 PackageReference,包保留在 global-packages 文件夾中(而不是解決方案中的 packages 文件夾中)。
PackageReference 僅列出那些直接安裝在項目中的 NuGet 包,不會顯示引用包所包含的低級依賴更加簡潔。visual-studio
好比咱們使用nuget安裝NPOI包,它的依賴以下:ui
在.net framework的packages.config文件中看到NPOI和它的依賴項.net
在.net 5項目文件中只有NPOI
第二個就是兩個工具的功能有差別
某些高級功能沒法使用的時候咱們就須要用命令的方式。
在VS裏面有兩種方式管理nuget包。第一種是右鍵項目->管理程序nuget包 進入導UI界面。
能夠進行程序包的查找和安裝的包管理,對包進行卸載更新。 在右上角有一個程序包源,能夠進行包源設置,設置包源地址。默認是將 NuGet.org 用做 NuGet 客戶端的包存儲庫。
因此咱們配置應使用如下 V3 API 終結點:
https://api.nuget.org/v3/index.json
NuGet.org 是 NuGet 包的公用主機,NuGet 技術還支持在雲中(如在 Azure DevOps 上)、在私有網絡中或者甚至直接在本地文件系統以私密方式託管包。
https://www.nuget.org/ 打開NuGet.org站點能夠進行包搜索和包的上傳等。
另一種方式就是工具->nuget管理器->程序包管理器控制檯 ,調出控制檯後就可使用cli命令進行nuget包管理了。
因此有時候咱們搜索文章的時候看到別人添加包,命令dotnet add package Newtonsoft.Json
咱們要知道這是nuget包添加,程序包管理器控制檯執行,或者在ui界面搜索包可視化操做添加,之前的 nuget.exe CLI添加包是install 命令,要注意區分下。
首先須要設置屬性,建立包須要如下屬性。
在 Visual Studio 中,能夠在項目屬性中設置這些值(在解決方案資源管理器中右鍵單擊項目,選擇「屬性」 ,而後選擇「包」 選項卡)。 也能夠直接在項目文件 (.csproj) 中設置這些屬性。
在包的 NuGet.org 頁面上所示的包說明能夠在 .csproj 文件中的
.nuspec 文件是包含包元數據的 XML 清單,.nuspec 當你建立包時將生成。
運行 pack 命令
運行dotnet pack
命令會打包解決方案中可打包的全部項目,也能夠在項目屬性上設置「在構建時生成NutGet包」。
具備 .nupkg 擴展名的 NuGet 包只是一個 zip 文件。 若要輕鬆查看任何包的內容,只需將擴展名更改成 .zip 並按常規方法展開內容。 嘗試將包上傳到主機前,請務必將擴展名改回 .nupkg。
命令執行完成後打包後生成的文件路徑會顯示在控制檯上,到目錄查看到ConsoleAppNet5.1.0.0.nupkg 包,並複製一個改爲zip驗證。
發佈到 nuget.org
登陸到nuget.org,使用 Microsoft 賬戶進行登陸,而後選擇upload上傳,選擇了文件後會進行自動校驗,若是有問題處理後再從新上傳。
還能夠經過命令的方式去上傳,可是須要api密鑰,本身去看下官網好了。