Nuget 缓存与全局包文件夹

Rob*_*ron 5 .net nuget

我试图了解两者之间的区别。 这篇文章说:

缓存避免下载已经安装在机器上的包。

全局包文件夹允许多个项目共享同一个安装的包,从而减少 NuGet 在计算机上的整体占用空间。

这篇文章说的有点多。

当要求检索包时,NuGet 首先查看 global-packages 文件夹。如果包的确切版本不存在,则 NuGet 会检查所有非 HTTP 包源。如果仍未找到包,NuGet 将在 http 缓存中查找包,除非您指定 --no-cache 与 dotnet.exe 命令或 -NoCache 与 nuget.exe 命令。如果包不在缓存中,或者未使用缓存,NuGet 然后通过 HTTP 检索包。

为什么要进行如此多的查找,为什么要在多个地方将包保存在本地?我错过了什么?

mis*_*der 2

全局包文件夹用于存储依赖项安装(解压后的 nuget 包和 nupkg 文件)。当多个项目使用相同的依赖项时,如果该位置已存在依赖项,它们将不会下载并解压依赖项。(如果它们正在使用PackageRefence。)

Htpp-cache 用于短期(30 分钟)存储下载的 nuget 包。我认为这是有用的唯一一次;当从全局包文件夹中删除包并且项目尝试恢复相同的包时,将从 http-cache 而不是远程 nuget 存储库中获取该包。

至于非Http来源;您可以将计算机中的文件夹定义为 nuget 存储库。该位置将包含 nukpg 文件。nuget可以使用这个位置作为nuget包源。(就像本地nuget存储库)