在查找 NuGet 包的存储位置时,我们注意到一些 dll 存储在 C:\Users\Username\.nuget\packages
而其他人则存储在 C:\Program Files\dotnet\sdk\NuGetFallbackFolder
.
例如,microsoft.aspnetcore.all 包文件夹存在于我的开发电脑 (C:\Users\Username\.nuget\packages
上的两个目录中。包含 2.0.7 和 2.1.0,而 C:\Program Files\dotnet\sdk\NuGetFallbackFolder
包含 2.0.0、2.0.3、2.0.5、2.0.6 和 2.0.8)。
根据 Ovais Mehboob Ahmed Khan 所著的《C# 7 和 .NET Core 2.0 高性能》一书。默认路径应该是 C:\Users\Username\.nuget\packages
.
为什么文件被分成不同的文件夹?
注意:我们在大多数项目中引用了 microsoft.aspnetcore.all 版本 2.0.8。我们在项目中引用的大多数其他包在两个文件夹之间交替。
最佳答案
.NET Core 引入了 Nuget 缓存的概念(有点类似于 GAC)。所有包仅下载一次到特定文件夹并重复用于所有项目。需要它是因为 .NET Core 2.x-3.x 现在由数百个包组成。所以这个框架现在非常细化,你可以使用你需要的东西。这造成了一个现在类型的问题 Nuget hell (过去我们有 DLL hell )。为了使开发人员的生活更轻松,MS 引入了“聚合”包,例如microsoft.aspnetcore.all(它不包含任何内容,只是引用所有内容,但实际上,如果您进行自包含构建,它将仅包含您正在使用的内容,而不是所有 DLL)。
正如您现在提到的,您可以在您的用户帐户下找到已安装的 Nuget 软件包,例如:
C:\Users\< 你的用户名 >.nuget\packages。
根据 this文档,您可以运行此命令,该命令将列出您机器上的所有 Nuget 文件夹:
dotnet nuget locals all -l
结果将是这样的(文件夹名称 self 是解释性的):
C:\Users\...>dotnet nuget locals all -l
info : http-cache: C:\Users\...\AppData\Local\NuGet\v3-cache
info : global-packages: C:\Users\...\.nuget\packages\
info : temp: C:\Users\...\AppData\Local\Temp\NuGetScratch
info : plugins-cache: C:\Users\...\AppData\Local\NuGet\plugins-cache
关于asp.net-core - .Net Core 2.0 NuGet 文件位置是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50771365/