在查找存储NuGet包的位置时,我们注意到有些dlls存储在C:\Users\Username\.nuget\packages中,而另一些则存储在C:\Program Files\dotnet\sdk\NuGetFallbackFolder中。
例如,在我的dev pc (C:\Users\Username\.nuget\packages包含2.0.7和2.1.0的两个目录中都存在(C:\Users\Username\.nuget\packages包文件夹,而C:\Program Files\dotnet\sdk\NuGetFallbackFolder包含2.0.0、2.0.3、2.0.5、2.0.6和2.0.8)。
根据"C# 7和.NET Core2.0高性能“一书,。默认路径应该是C:\Users\Username\.nuget\packages。
为什么文件被分隔到不同的文件夹中?
注意:我们在大多数项目中引用的是microsoft.aspnetcore.all版本2.0.8。我们在项目中引用的大多数其他包在两个文件夹之间交替。
发布于 2019-06-26 13:35:58
.NET核心引入了Nuget缓存的概念(有点类似于GAC)。所有软件包仅下载一次到特定文件夹,并用于所有项目。它之所以需要,是因为.NET Core2.x-3.x现在由数百个包组成。因此,现在的框架非常细粒度,您可以使用所需的内容。这就创建了一个现在类型的问题-- Nuget Hell (习惯了DLL )。为了简化开发人员的生活,MS引入了“聚合”包,例如microsoft.aspnetcore.all (它不包含任何内容,只是引用所有内容,但实际上,如果您做了自我包含的构建,它将只包含您使用的东西,而不是所有all )。
正如您现在提到的,您可以在您的用户帐户下找到已安装的Nuget包,例如: C:\Users\<您的userName >.nuget\packages。
根据这文档,您可以运行以下命令,该命令将列出机器上的所有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-cachehttps://stackoverflow.com/questions/50771365
复制相似问题