如何修改NuGet默认全局包文件夹的位置?

2023-11-20

由于一些历史原因,重装系统成为Windows用户解决疑难杂症的祖传手艺。受此影响,给硬盘分区几乎成为了一种执念,少则C、D两个盘,夸张一点的5~6个盘的也不是没有。

PS:macOS和Linux一直都不鼓励给磁盘分区,虽然不禁止但也不提倡。随着云技术和宽带的提升,越来越多的人更喜欢把自己认为比较重要的资料存储在云盘而不是本地磁盘,一是可以跨设备访问,二来也不担心突然有一天电脑损坏或者丢失。

前几天正在写代码的时候,突然收到一条IDE的提示,C盘空间不足!赶紧打开文件资源管理器看了一眼,喔嚯……C盘还剩足足1MB多的空间,没蓝屏算是给足我面子了。

接下来就是行云流水般的三板斧:

  • 退出应用程序(物理内存不足的时候会划出一部分磁盘空间作为虚拟内存,C盘根目录下的pagefile.sys就是虚拟内存生成的文件,我看了一下,20+GB,也不敢删,只能眼睁睁看着它把磁盘空间蚕食掉)
  • 清理垃圾文件
  • 重启电脑

砍完之后,可用空间提升到了9GB。但是也不够啊,鬼知道什么时候又只剩1MB了?用TreeSize分析了一下C盘的使用情况,发现.nuget文件夹的大小超过了10GB,虽然我在项目里面做了一些配置,把当前项目用到的nuget包都存放在项目目录下,而不是默认的全局文件夹目录,但是依然有很多系统程序以及LinqPad安装的包会缓存到默认目录。

Windows默认的nuget包缓存路径是C:\Users\用户名.nuget\packages。
masOS是/Users/用户账号/.nuget/packages

清理历史版本可以腾出一些空间,但是治标不治本,如果某个程序或项目依赖于清理掉的版本,则可能被重新恢复或者干脆报错无法使用。那能不能把默认目录指定到其他盘呢?

肯定能!

方法一:修改全局配置文件

NuGet会在C:\Users\用户\AppData\Roaming\NuGet\生成一个NuGet.Config文件,这是nuget的全局配置文件,如果.net项目没有单独配置,则会使用全局配置恢复、缓存和读取依赖包。

用文本编辑器打开这个文件,内容如下:

<?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>

如果想添加其他包源,可以在packageSources里面下增加相关节点:

<!--增加一个Nexus Repository服务作为nuget源-->
<add key="MyNuget" value="https://nexus.mydomainname.com/repository/nuget-hosted/index.json" />
<!--增加一个本地磁盘的文件夹作为nuget源-->
<add key="Test Source" value="D:\.nuget\packages" />

如果要修改全局包目录,需要在NuGet.config的config节点设置globalPackagesFolder(如果没有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:\.nuget\packages" />
  </config>
</configuration>

下面是config支持的配置项:

  • dependencyVersion(仅限于 packages.config):包安装、还原和更新的默认 DependencyVersion 值(未直接指定 -DependencyVersion 开关时)。 NuGet 包管理器 UI 也使用此值。 值为 LowestHighestPatchHighestMinorHighest

  • globalPackagesFolder (仅使用 PackageReference 的项目):默认全局包文件夹的位置。 默认值为 %userprofile%\.nuget\packages (Windows) 或 ~/.nuget/packages (Mac/Linux)。 相对路径可在项目特定的 nuget.config 文件中使用。 此设置由 NUGET_PACKAGES 环境变量替代,该变量优先。

  • repositoryPath(仅限于 packages.config):安装 NuGet 包的位置,而非默认的 $(Solutiondir)/packages 文件夹。 相对路径可在项目特定的 nuget.config 文件中使用。

  • defaultPushSource:如果操作未找到任何其他包源,则会标识应用作默认值的包源 URL 或路径。

  • http_proxy http_proxy.user http_proxy.password no_proxy:连接到包源时要使用的代理设置;http_proxy 应为 http://<username>:<password>@<domain> 格式。 密码已加密,且不能手动添加。 对于 no_proxy,该值是绕过代理服务器的域的列表(以逗号分隔)。 可将 http_proxy 和 no_proxy 环境变量交替用于这些值。

  • maxHttpRequestsPerSource:控制从 NuGet 发送到每个包源的并行请求的最大数量,以便进行包依赖项解析和下载。 上的 dotnet.exe 默认值是从 Int32.MaxValue 属性派生的 HttpClientHandler.MaxConnectionsPerServer 。 此设置对 没有影响dotnet.exe``Mac OS,因为限制设置为 16 以避免打开文件过多错误。 在 (如 )Visual Studio上运行的 的NuGet client tools默认值在 和 1 上Mono为 Windows 64 。.NET Framework nuget.exe 样式项目的 Packages.config 默认值设置为 Environment.ProcessorCount。 将属性配置为 maxHttpRequestsPerSource 小于默认值的值可能会影响 NuGet 性能。

  • signatureValidationMode:指定用于验证包安装和还原的包签名的验证模式。 accept值为 、require。 默认为 accept

<config>
    <add key="dependencyVersion" value="Highest" />
    <add key="globalPackagesFolder" value="c:\packages" />
    <add key="repositoryPath" value="c:\installed_packages" />
    <add key="http_proxy" value="http://company-squid:3128@contoso.com" />
    <add key="signatureValidationMode" value="require" />
    <add key="maxHttpRequestsPerSource" value="16" />
</config>

方法二:设置环境变量

如果方法一不行,那就需要通过设置环境变量来指定全局包位置。

  1. 依次打开开始菜单--设置--系统--系统信息--高级系统设置,然后切换到“高级”选项卡,点击“环境变量”按钮打开环境变量设置窗口。

  1. 环境变量设置窗口分为用户环境变量和系统环境变量,我的目的是为了腾磁盘空间的,所以这里选择设置到系统级别的环境变量(其实都差不多)。

  1. 点击系统变量下方的新建按钮,在弹出对话框中填写变量名(NUGET_PACKAGES),通过浏览目录选择或直接在变量值输入框内输入新的全局包目录。然后点击确定按钮。

  1. 确认新建成功后,在环境变量窗口点击确定保存设置。
  2. 完成以上设置之后,新的设置会马上生效(如果不放心可以重启一下电脑),接下来可以把原先目录里面的包全部剪切到新目录里面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修改NuGet默认全局包文件夹的位置? 的相关文章

随机推荐

  • 域名及真实IP-信息收集

    顶级域名 a 国际域名 常用的是 com net org 推荐大家用 com 示范 taobao com dangdang com b 国家域名 中国国家域名 cn 美国国家域名 us 考虑政策原因 cn域名请个人网站谨慎使用 企业网站可以
  • Photoshop、Illustrator、Sketch哪个更好

    以前在交流组经常能看到大家争论哪个设计软件好 到底是你的吗 Illustrator好还是我的CorelDRAW或者他的Photoshop强大 但是跟着UI流行的设计 Sketch软件也加入了争论 让我们和你分享一下这篇文章 让我们来看看平面
  • 怎么检查代码完好?

    怎么检查代码完好 一 前言 在提交代码前 不论是提交到 SVN 还是 Git 仓库 我们都必须保证提交的代码是正确无误 那么咱们怎么才能确保资金调的代码是正确无误的呢 二 问题 1 maven 项目中提交代码前 怎么保证代码正确无误 2 W
  • 树莓派内核开发准备(内核源码获取、启动过程、源码目录树)

    目录 1 交叉编译工具的安装 2 内核源码获取 3 嵌入式设备带操作系统的启动过程扫盲 4 Linux内核源码树扫盲 1 内核源码简介 2 Linux内核源代码目录树结构 tree指令查看 内核源码目录树 1 交叉编译工具的安装 参照我之前
  • 【单片机笔记】基于STM32的8通道的开源无线遥控器手柄

    MARS STM32遥控器v1 0 MARS STM32遥控器v1 0 1 1 遥控器简介 1 2 硬件详解 8 2 1MCU主控部分 8 2 2电源部分 9 2 3摇杆 段位 拨轮通道部分 10 2 4五项按键 11 2 5蜂鸣器和LED
  • SpringCloud Alibaba 引入Dubbo踩坑

    前言 在搭建springcloud alibaba的时候 引入Dubbo相关依赖 项目启动报错 版本信息 依赖 版本 Spring Boot 2 4 2 Spring Cloud 2020 0 0 Spring Cloud Alibaba
  • 为什么大公司一定要使用DevOps?

    0 DevOps的意图 究竟什么是DevOps 要想回答这个问题 首先要明确DevOps这个过程参与的人员是谁 即开发团队和IT运维团队 那么 DevOps的意图是什么呢 即在两个团队之间 建立良好的沟通和协作 更快更可靠的创建高质量软件
  • 机器学习分类模型-线性回归Linear regression

    Linear regression module from collections import Counter import numpy as np import pandas as pd from imblearn over sampl
  • 阿里云ftp配置

    yum install vsftpd 安装ftp rpm Uvh http mirror centos org centos 6 os x86 64 Packages ftp 0 17 54 el6 x86 64 rpm 安装ftp插件 v
  • 学习PostgreSQL

    参考链接 https www runoob com postgresql postgresql tutorial html
  • Mysql 批量update和批量insert详解

    为了减少与数据库的连接 减少服务器的负荷 需要我们时常对SQL进行分析 优化等操作 针对mysql的批量更新 insert 和 update 就是使用一条INSERT UPDATE语句来更新多条记录 由于不是标准的SQL语法 只能在MySQ
  • 构建知识图谱,让自己更值钱 #CSDN博文精选# #知识图谱# #IT技术#

    大家好 我是小C 又见面啦 文章过滤器 精选大咖干货 助力学习之路 5天20篇CSDN精选博文带你掌握系统化学习方法 专栏将挑选有关 系统化学习方法 的20篇优质文章 帮助大家掌握更加科学的学习方法 在这里 你将收获 快速掌握系统化学习的理
  • Android 弹出通知

    Android 8 0
  • fatal error C1083: 无法打开包含文件:“iostream.h”: No such file or directory

    刚开始用Visual studio net 2003 一个这样的例子 新建了一个win 32项目 include stdafx h include
  • 使用Mask-RCNN在实例分割应用中克服过拟合

    点击上方 AI公园 关注公众号 选择加 星标 或 置顶 作者 Kayo Yin 编译 ronghuaiyang 导读 只使用1349张图像训练Mask RCNN 有代码 代码 https github com kayoyin tiny in
  • 【react】回调函数形式的ref

    回调函数有3个特点 是我定义的函数 我没有调用这个函数 在我没有调用的情况下这个函数自己执行了 ref绑定一个箭头函数作为回调函数 可以输出以下这段看下 ref绑定的箭头函数是会自己执行的 class Demo extends React
  • 关于运发的知识点123(个人笔记 持续更新)

    前言 作为一个物联网的小辣鸡 硬件设计水平不能说没有 只能说一点点 正好要做新项目 自己学着去处理信号 滤波 在这里做一点笔记 参考书一 杨建国老师 新概念模拟电路 pdf 参考书二 单电源运放图集 pdf 原版 翻译中文版 注 想要的自己
  • redis配置 -详情-redis.config

    Redis config 启动的时候 就通过配置文件来启动 单位 配置文件 unit单位 对大小写不敏感 不区分大小写 INCLUDES 包含 include path to local conf include path to other
  • 加糖的CRM---开源项目Sugar CRM中文化安装过程

    目前CRM满天飞 一直也没什么兴趣 好象从几百万美刀到几百块的都有 这次试了试安装Sugar CRM 把安装过程梳理了一下 记下来 以下在环境为windows XP sp2 IIS5 1 MYSQL4 18 PHP5 0下安装成功 首先是要
  • 如何修改NuGet默认全局包文件夹的位置?

    由于一些历史原因 重装系统成为Windows用户解决疑难杂症的祖传手艺 受此影响 给硬盘分区几乎成为了一种执念 少则C D两个盘 夸张一点的5 6个盘的也不是没有 PS macOS和Linux一直都不鼓励给磁盘分区 虽然不禁止但也不提倡 随