一、 Nuget包管理器
官网 https://learn.microsoft.com/zh-cn/nuget/what-is-nuget
- NuGet 为 Microsoft 开发平台提供免费的开源包管理系统.
- NuGet 自身会在 https://www.nuget.org/ 维护包含 100,000 个以上唯一包的中央存储库。这些包每天会由数百万 .NET/.NET Core 开发人员进行使用
二、安装
1.随dotnet SDK分发 :(正常的使用方式)
dontnet SDK下载地址: https://dotnet.microsoft.com/zh-cn/download/dotnet
2.随Visual Studio分发(除了.Net CLI,它还带UI界面的维护方式):
Visual Studio下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/
3.nuget.exe(单独安装,适合非dotnet SDK的项目,如Mono)
下载地址:https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
三、查看与清除全局包、缓存和临时文件夹
1.查看所有文件夹
dotnet nuget locals all –list (常用方式:我们一般在dontnet SDK框架下,使用dotnet.exe)
或者 nuget locals all -list (这是独立CLI文件nuget.exe使用方式,不常用)
2.清除所有文件夹内容
dotnet nuget locals all –clear
或者 nuget locals all -clear
3.根据情况清除指定的文件夹
//Clear the 3.x+ cache (use either command)
dotnet nuget locals http-cache –clear
nuget locals http-cache -clear
// Clear the 2.x cache (NuGet CLI 3.5 and earlier only)
nuget locals packages-cache -clear
//Clear the global packages folder (use either command)
dotnet nuget locals global-packages –clear
nuget locals global-packages -clear
// Clear the temporary cache (use either command)
dotnet nuget locals temp –clear
nuget locals temp -clear
// Clear the plugins cache (use either command)
dotnet nuget locals plugins-cache –clear
nuget locals plugins-cache -clear
四、配置全局包、缓存和临时文件夹路径,避免C盘增量占用
(以下为使用 .NET CLI为基准,Mono或老框架对包管理有点差异,详见微软官方文档)
1.配置优先级:环境变量>配置文件
配置文件NuGet.Config: 解决方案级>用户级>计算机级
1.1 解决方案(不建议配置):在解决方案文件夹中,设置适用于子文件夹中的所有项目。
1.2 用户(适当配置):%appdata%\\NuGet\\NuGet.Config
1.3 计算机级(不要配置):%ProgramFiles(x86)%\\NuGet\\Config
2.全局包路径
- 包管理格式有两种 packages.config(默认,微软为了兼容之前的框架,不影响新框架) 和 PackageReference(推荐)
- .NET Core/5/6/7/8等项目:强制使用 PackageReference,默认用packages.config设置无效
- 全局包文件夹是 NuGet 安装任何下载的包的位置。 每个包完全扩展为与包标识符和版本号匹配的子文件夹。 使用 PackageReference 格式的项目始终直接从此文件夹中使用包。 使用packages.config格式时,包将安装到 全局包 文件夹中,然后将其复制到项目的 packages 文件夹中。
2.1 默认位置:%userprofile%.nuget\\packages
2.2 使用NUGET_PACKAGES环境变量修正
2.3 修改globalPackagesFolder路径(建议用户级:NuGet.Config,建议修改,避免磁盘增量占用)
dotnet nuget config set globalPackagesFolder "d:\\cache\\nuget\\packages"
NuGet.Config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<config>
<add key="globalPackagesFolder" value="d:\\cache\\nuget\\packages" />
</config>
</configuration>
3.HTTP缓存路径
- NuGet 将缓存大多数 NuGet 源通信(不包括搜索)的副本,这些副本将组织到每个包源的子文件夹中。 包不会展开,并且上次修改日期超过 30 分钟的文件通常被视为过期。
3.1 默认位置:%localappdata%\\NuGet\\v3-cache
3.2 使用 NUGET_HTTP_CACHE_PATH 环境变量修正
setx NUGET_HTTP_CACHE_PATH "D:\\cache\\nuget\\v3-cache"
4.临时缓存路径
- NuGet 可在其各种操作期间存储临时文件的文件夹。
4.1 默认位置:%temp%\\NuGetScratch
4.2 使用 NUGET_SCRATCH 环境变量修正
setx NUGET_SCRATCH "D:\\cache\\nuget\\scratch"
5.插件缓存路径
- 用于存储操作声明请求结果的 NuGet 文件夹。 有关详细信息,请参阅 跨平台插件参考 。
5.1 默认位置:%localappdata%\\NuGet\\plugins-cache
5.2 使用 NUGET_PLUGINS_CACHE_PATH 环境变量修正
setx NUGET_PLUGINS_CACHE_PATH "D:\\cache\\nuget\\plugins-cache"
注意
- 修改路径变量后,重启电脑生效(不要使用set,set为临时设置环境变量,setx为设置永久用户环境变量)
- Visual Studio下Nuget提供UI界面设置:工具-》Nuget包管理器做简单配置
五、配置Nuget源
1.官方默认源:
nuget.org ,https://api.nuget.org/v3/index.json
1.1 查看源
dotnet nuget list source
1.2 添加源
# 官方源(已默认存在)
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org
# 添加企业/私有源
dotnet nuget add source https://your-company.pkgs.visualstudio.com/_packaging/FeedName/nuget/v3/index.json -n "CompanyFeed"
# 本地文件夹源
dotnet nuget add source C:\\LocalPackages -n LocalFeed
2. Nuget私有服务器部署
- nuget-server https://learn.microsoft.com/zh-tw/nuget/hosting-packages/nuget-server
- JFrog Artifactory Community Edition (CE) https://jfrog.com/
3.相关生态
- https://learn.microsoft.com/zh-cn/nuget/policies/ecosystem
六、使用总结
1.配置源(如果没有要求,不用管) 2.配置包或缓存路径(必须做,两件事先清除,后设路径,再重启电脑,完成开发前准备)
#清除
dotnet nuget locals all –clear
#设置
dotnet nuget config set globalPackagesFolder "d:\\cache\\nuget\\packages"
setx NUGET_HTTP_CACHE_PATH "D:\\cache\\nuget\\v3-cache"
setx NUGET_SCRATCH "D:\\cache\\nuget\\scratch"
setx NUGET_PLUGINS_CACHE_PATH "D:\\cache\\nuget\\plugins-cache"
