Nuget包缓存存放位置迁移

本文介绍了如何通过环境变量修改Nuget包缓存的存放位置。

一、背景

默认情况下,NuGet会将项目中使用的包缓存到C盘,随着项目开发积累nuget包越来越多,这会逐渐挤占大量C盘空间,所以我们可以将nuget包缓存位置指定到其他盘中存放。

二、软件环境

win10、vs2022

三、查看当前缓存存放位置

在cmd中执行如下命令,可以查看当前nuget包缓存存放的位置

dotnet nuget locals all --list

  执行结果:

 

四、缓存介绍

可以看到nuget相关缓存有4种,具体介绍可以参考官网说明

名称说明和位置(每个用户)
global-packages global-packages 文件夹是 NuGet 安装任何下载包的位置。 每个包完全展开到匹配包标识符和版本号的子文件夹。 使用 PackageReference 格式的项目始终直接从该文件夹中使用包。 使用 packages.config 时,包将安装到 global-packages 文件夹,然后复制到项目的 packages 文件夹。
  • Windows: %userprofile%\.nuget\packages
  • Mac/Linux:~/.nuget/packages
  • 使用 NUGET_PACKAGES 重写环境变量 globalPackagesFolder 或 repositoryPath配置设置(分别在使用 PackageReference 和 packages.config 时)或 RestorePackagesPath MSBuild 属性(仅限 MSBuild)。 环境变量优先于配置设置。
http-cache Visual Studio 包管理器 (NuGet 3.x+) 和 dotnet 工具存储此缓存中下载包的副本(另存为 .dat 文件),这些副本被组织到每个包源的子文件夹中。 未展开包,且缓存中有 30 分钟的到期时间。
  • Windows: %localappdata%\NuGet\v3-cache
  • Mac/Linux:~/.local/share/NuGet/v3-cache
  • 使用 NUGET_HTTP_CACHE_PATH 环境变量替代。
temp NuGet 在各操作期间在其中存储临时文件的文件夹。
  • Windows: %temp%\NuGetScratch
  • Mac:/tmp/NuGetScratch
  • Linux:/tmp/NuGetScratch<username>
  • 使用 NUGET_SCRATCH 环境变量替代。
plugins-cache 4.8 + NuGet 存储来自操作声明请求的结果的文件夹。
  • Windows: %localappdata%\NuGet\plugins-cache
  • Mac/Linux:~/.local/share/NuGet/plugins-cache
  • 使用 NUGET_PLUGINS_CACHE_PATH 环境变量替代。

五、缓存路径配置

 依据官方说明文档,我们可以使用环境变量去配置这4种缓存的存放位置

根据自己的喜好在指定的目录创建好对应的文件夹,并创建4个如下环境变量:

NUGET_HTTP_CACHE_PATH=D:\LocalCache\nuget\v3-cache

NUGET_PACKAGES=D:\LocalCache\nuget\packages

NUGET_PLUGINS_CACHE_PATH=D:\LocalCache\nuget\plugins-cache

NUGET_SCRATCH=D:\LocalCache\nuget\NuGetScratch

六、缓存迁移

 配置完成以后,将旧路径下的缓存文件剪切到新路径下即可

http-cache: C:\Users\用户名\AppData\Local\NuGet\v3-cacheD:\LocalCache\nuget\v3-cache
global-packages: C:\Users\HONOR\.nuget\packages\D:\LocalCache\nuget\packages
temp:C:\Users\HONOR\AppData\Local\Temp\NuGetScratchD:\LocalCache\nuget\NuGetScratch
plugins-cache:C:\Users\HONOR\AppData\Local\NuGet\plugins-cacheD:\LocalCache\nuget\plugins-cache

 

2025-03-06 14:45:29【出处】:https://blog.csdn.net/shujudeliu/article/details/135906965

=======================================================================================

如何修改通过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重新打开某一项目,将项目中的某个引用包卸载后重新安装,在项目引用列表中找到这个引用项,右键打开属性面板,在“路径”一栏中我们可以清晰的发现引用的地址已经变成了我们刚刚设置的新地址。

-------------------------------本篇文章到此结束-------------------------------------

 

2025-03-06 14:47:08【出处】:https://www.cnblogs.com/iZOHC/p/16663593.html

=======================================================================================

Nuget更新全局包、缓存和临时文件夹路径位置


NuGet是一个流行的软件包管理器,可以帮助.NET开发人员轻松地添加、删除和更新项目中的库和工具。本文将向您介绍如何更改NuGet的全局包、缓存和临时文件夹路径位置,以便根据您的偏好进行自定义配置。
在默认情况下,NuGet将全局包、缓存和临时文件夹存储在特定的目录中。一般是C盘中
随着时间的推移, 文件夹会越来越大,现在我的 nuget 文件夹有 十几个 G,所以需要移动他来减少C盘占用的空间。

 

官方Nuget管理全局包、缓存和临时文件夹的参考: Nuget链接地址

下面介绍下具体的实施步骤

1、查看默认的Nuget路径

通过命令
下面展示一些 内联代码片

dotnet nuget locals all --list

如下,输出了Nuget全局包、缓存和临时文件夹等路径位置
在这里插入图片描述

2、更改全局包路径

有两种方式可以修改

2.1 通过环境变量来进行修改

在环境变量中添加NUGET_PACKAGES 变量重写packages包的位置
在这里插入图片描述
上面配置好后保存,重新通过命令查看下,可以看到的位置已经变成了我们配置的文件路径了
然后可以把默认路径中的packages复制到设置的路径中
在这里插入图片描述

2.2通过Nuget.Config配置文件来进行修改

NuGet.Config配置文件的路径:
1、域账号登录的位置:
C:\Users{user}\AppData\Roaming\NuGet\NuGet.Config
2、Window登录的位置:
C:\Program Files (x86)\NuGet\Config\NuGet.Config
在配置文件中添加配置

<config>
      <add key="globalPackagesFolder" value="你自己的packages路径" />
 </config>

在这里插入图片描述

3、更改http-cache路径

同理也是配置环境变量,使用 NUGET_HTTP_CACHE_PATH 环境变量替代
在这里插入图片描述

4、更改temp文件路径

使用 NUGET_SCRATCH 环境变量替代
在这里插入图片描述

5、更改plugins-cache文件路径

使用 NUGET_PLUGINS_CACHE_PATH 环境变量替代
在这里插入图片描述
至此Nuget所有路径都设置为我们自己的路径了,可以使用命令查看下我们的设置是否成功,可以看到Nuget全局包、缓存和临时文件夹等都被我们给替换了
在这里插入图片描述

 

2025-03-06 15:26:31【出处】:https://blog.csdn.net/lovestj/article/details/131488645

=======================================================================================

posted on 2025-03-06 14:47  jack_Meng  阅读(670)  评论(0)    收藏  举报

导航