通过VS下载的NuGet包,如何修改其下载存放路径?
一、了解NuGet包的默认存放路径
我们通过NuGet包管理器下载的引用包,默认是存放在C盘的,存储路径一般是:
C:\Users\{系统用户名}\.nuget\packages
二、为什么需要修改NuGet包的默认存放路径?
最直接的答案便是——节省C盘存储资源,减缓C盘飚红速度。
我们都知道,C盘的存储资源是有限的,而随着我们开发的项目越来越多,所引用的NuGet包自然而然也是越来越多。如果我们不做清理,这些文件会一直占据C盘的存储空间,让本就不富裕的C盘雪上加霜,而我们定时清理的话,下一次打开项目时会出现引用丢失找不到的情况,或者VS又重新下载引用包文件,简直是费时费力不讨好。
这时就有小伙伴要问了,我们能不能把下载的NuGet包存放在C盘之外的其他盘中吗?答案是当然可以。
三、更改下载的NuGet包存储位置
1、根据下述文件路径,找到一个名为“NuGet.Config”的文件,或者通过搜索,直接查找该文件。
C:\Users\{系统用户名}\AppData\Roaming\NuGet
2、打开“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>
</configuration>
3、将其内容替换为以下内容并保存:
<?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>
<!--默认全局包文件夹的位置。【仅使用 PackageReference 的 globalPackagesFolder (项目)】-->
<add key="globalPackagesFolder" value="你想要NuGet包存放的新路径" />
<!--安装 NuGet 包的位置,而非默认的 $(Solutiondir)/packages 文件夹。【仅限于 packages.config】 -->
<add key="repositoryPath" value="你想要NuGet包存放的新路径" />
</config>
</configuration>
四、修改VS离线包引用地址
1、根据下述文件路径,找到一个名为“Microsoft.VisualStudio.Offline.config”的文件,或者通过搜索,直接查找该文件。
C:\Program Files (x86)\NuGet\Config
2、打开“Microsoft.VisualStudio.Offline.config”这个文件,我们可以看到原始的文件内容如下所示:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"/>
</packageSources>
</configuration>
3、将其内容替换为以下内容并保存:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="Microsoft Visual Studio Offline Packages" value="你想要NuGet包存放的新路径"/>
</packageSources>
<!--新增的内容-->
<config>
<add key="globalPackagesFolder" value="你想要NuGet包存放的新路径" />
</config>
</configuration>
五、验证修改的新路径是否成功
用VS重新打开某一项目,将项目中的某个引用包卸载后重新安装,在项目引用列表中找到这个引用项,右键打开属性面板,在“路径”一栏中我们可以清晰的发现引用的地址已经变成了我们刚刚设置的新地址。
-------------------------------本篇文章到此结束-------------------------------------