Nuget本地临时缓存路径处理

简介: Nuget本地临时缓存路径处理


一、前言

日常开发工程中,常常会使用到三方框架或组件程序集,这些依赖的为 Nuget 包引入方式。本地不存在或没有对应版本的时,在还原 Nuget包 或者项目由 Vs 初次打开时,Vs会依赖本地的 Nuget已启用包源配置自动下载到本地的缓存路径,默认情况下该路径为当前用户帐户目录下,.nuget/.Nuget 目录的 packages 中。如果本地使用和开始过的项目越多,类型和依赖越多,那本地的临时文件缓存也就越多,这些包文件会随着时间的推移,越来越大,占用 C盘 本就不多的存储空间。

二、解决办法

那可以直接清除吗?可以。如果读者不嫌弃麻烦,可以不定期的对其进行清除,毕竟项目多,不是每次都需要开启所有的项目,删除本地临时依赖包也是可以的,只是避免不了,多次打开不同依赖的项目,仍然回去下载对应依赖包。

其实也有对应其他的方式,可以解决对应问题。以下是笔者整理的两种办法,各有优劣。

方式一、修改缓存路径

C:\Program Files (x86)\NuGet\ConfigMicrosoft.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>
  <config> 
    <add key="globalPackagesFolder" value="D:\Program Files\Nuget\Package" />
  </config>
</configuration>

其中,D:\Program Files\Nuget\Package 读者可以替换为自己想要存储缓存文件的对应路径。

然后将 .nuget/packages 文件夹中的缓存文件复制到对应上述配置好的目录中,基本上就算是完成迁移操作。

也可以在文件目录下创建,Nuget.config,将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>
  <config> 
    <add key="globalPackagesFolder" value="D:\Program Files\Nuget\Package" />
  </config>
</configuration>

配置之后,记得关闭 Vs重启。避免因为 Vs 的缓存问题造成新路径当前项目无效。

同时需要注意,有时候会出现对应 Nuget.config 在软件升级安装过程中,被覆盖重置,导致配置被清空。

方式二、创建目录链接【推荐方式】

除了修改Nuget配置以外,还有一种简单方式是,迁移当前缓存包到其他盘符,nuget目录配置不变,构建目录链接指向迁移目录。一般在当前用户目录下:.dotnet/packages 中,笔者直接迁移整个 .dotnet 文件夹,指向其他盘。

这里需要使用到指令 mklink ,这是系统自带指令,不需要额外安装。具体操作如下:

1、在目标盘符中,创建对应文件夹,此处为 D:\Program Files\Nuget\Package,然后 packages 文件夹中的所有文件统统移动到目标文件夹 D:\Program Files\Nuget\Package 中。

2、迁移完成后,回到 .nuget 目录下,以管理员权限打开命令提示符,切换路径到 .nuget 文件路径作为工作路径,执行指令 mklink ,具体如下:

>mklink
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
        /D      创建目录符号链接。默认为文件
                符号链接。
        /H      创建硬链接而非符号链接。
        /J      创建目录联接。
        Link    指定新的符号链接名称。
        Target  指定新链接引用的路径
                (相对或绝对)。
 >mklink /D packages "D:\Program Files\Nuget\Package"
为 packages <<===>> D:\Program Files\Nuget\Package 创建的符号链接

输出如上结果,表示目录链接创建成功,同时 .nuget 目录下生成如下文件,类型为文件类型,实际指向对应的 D:\Program Files\Nuget\Package 文件目录,有别于快捷方式链接。

从两种方式来看,第二种,创建目录链接的方式,改动成本更小,出错率更低一些,所以笔者推荐以第二种方式进行 Nuget 本地临时缓存目录的调整操作。以上就是笔者整理的相关技巧。


相关文章
|
1月前
|
缓存 Shell iOS开发
修改 torch和huggingface 缓存路径
简介:本文介绍了如何修改 PyTorch 和 Huggingface Transformers 的缓存路径。通过设置环境变量 `TORCH_HOME` 和 `HF_HOME` 或 `TRANSFORMERS_CACHE`,可以在 Windows、Linux 和 MacOS 上指定自定义缓存目录。具体步骤包括设置环境变量、编辑 shell 配置文件、移动现有缓存文件以及创建符号链接(可选)。
350 2
|
缓存
啊哈!C盘又满了?快修改IntelliJ IDEA默认系统缓存cache目录路径
啊哈!C盘又满了?快修改IntelliJ IDEA默认系统缓存cache目录路径
646 0
啊哈!C盘又满了?快修改IntelliJ IDEA默认系统缓存cache目录路径
|
缓存 数据安全/隐私保护 Windows
windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
648 0
windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
|
缓存 Linux Windows
如何移动 nuget 缓存文件夹
原文:如何移动 nuget 缓存文件夹 本文告诉大家如何移动 nuget 缓存文件夹。 因为 nuget 文件夹一般比较大,现在我的 nuget 文件夹有 10 G,默认的 nuget 文件夹是在C盘,所以需要移动他。
1945 0
|
8天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
133 85
|
2月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
84 6
|
5天前
|
缓存 监控 NoSQL
Redis经典问题:缓存穿透
本文详细探讨了分布式系统和缓存应用中的经典问题——缓存穿透。缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致大量请求直接落到数据库上,可能引发数据库崩溃或性能下降。文章介绍了几种有效的解决方案,包括接口层增加校验、缓存空值、使用布隆过滤器、优化数据库查询以及加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统的影响,提升系统的稳定性和性能。
|
1月前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
|
1月前
|
存储 缓存 NoSQL
【赵渝强老师】基于Redis的旁路缓存架构
本文介绍了引入缓存后的系统架构,通过缓存可以提升访问性能、降低网络拥堵、减轻服务负载和增强可扩展性。文中提供了相关图片和视频讲解,并讨论了数据库读写分离、分库分表等方法来减轻数据库压力。同时,文章也指出了缓存可能带来的复杂度增加、成本提高和数据一致性问题。
【赵渝强老师】基于Redis的旁路缓存架构