nuget 是.Net平台上的包管理器, 對於包的發布(打包 package)和消費(下載依賴管理)都有很好的支持, 本文僅僅關注消費端,
https://www.nuget.org/ 官網
https://nugetmusthaves.com/ 有細分領域的排名
=======================
nuget項目依賴定義格式
=======================
新版 nuget 和VS 2019 都推薦項目依賴采用 PackageReference 格式, 這種格式的依賴聲明是放到 .csproj 項目文件中的, 之前是使用 packages.config 文件來保存 nuget 依賴項. PackageReference 相比 packages.config 的優點有:
1. 統一了所有依賴聲明存放文件
在原來的方式下, solution 下各個項目之間的依賴是在 .csproj 文件中聲明的, nuget 依賴是在 packages.config 中聲明的. 現在推薦方式, 統統定義在 .csproj 文件中, 在項目文件中搜索 PackageReference 字樣就能看到其依賴關系.
2. 依賴項支持 float 版本寫法,
比如項目初始時候, 加入了一個 CsvHelper 11.1 , 我們可以改寫版本號為 11.* , 這樣在 build或 restore 項目自動會從 nuget feed下載並應用 CsvHelper 11大版下的最新版.
啟用 PackageReference 格式的方法是:
1. 針對新項目, 在選項中, 直接設置程序包管理默認的格式為: PackageReference
具體為: 找到NuGet 包管理器/常規頁簽: 設置程序包管理默認的格式為: PackageReference, 另一個可選格式為 packages.config 文件
2. 針對基於packages.config的老項目: 在VS的資源管理器的 References 節點上, 選擇快捷菜單PackageReference….即可轉為 PackageReference 格式.
=======================
項目中新增/升級/移除nuget包
=======================
在VS 2019項目文件節點上, 進入 nuget 管理器就能新加/升級/移除 nuget package.
=======================
nuget 環境設置
=======================
參考 https://docs.microsoft.com/zh-cn/nuget/reference/nuget-config-file
1. nuget 環境設置文件名為 NuGet.Config, 有兩種級別的 NuGet.Config 文件:
(1). Solution 級別的設置
NuGet.Config 文件要和 solution 文件同目錄, 注意不是 .csproj 文件的目錄
(2). 操作系統用戶級的設置
NuGet.Config 文件是在 %appdata%\NuGet 目錄下, 比如:
C:\Users\Administrator\AppData\Roaming\NuGet\NuGet.Config
2. nuget 下載包存放位置
默認情況下, package都是存放到 %userprofile%\.nuget\packages 下, 我們可以通過OS環境變量 NUGET_PACKAGES 來設置新的package 存放路徑, 也可以在 NuGet.Config 文件中指定 globalPackagesFolder 屬性.
3. 下面是一個 NuGet.Config文件示例, 包含設置多個 packageSources 倉庫, 上網代理, 私倉的認證
<config> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="myprivate" value="https://10.10.10.10/packages/" /> </packageSources> <packageRestore> <!-- Allow NuGet to download missing packages --> <add key="enabled" value="True" /> <!-- Automatically check for missing packages during build in Visual Studio --> <add key="automatic" value="True" /> </packageRestore> <add key="globalPackagesFolder" value="c:\packages" /> <add key="http_proxy" value="http://company-squid:3128@contoso.com" /> <add key="signatureValidationMode" value="require" /> <packageSourceCredentials> <myprivate> <add key="Username" value="user@contoso.com" /> <add key="Password" value="..." /> </myprivate> </packageSourceCredentials> </config>