【问题标题】:How to get the nuget cache folder location programmatically如何以编程方式获取 nuget 缓存文件夹位置
【发布时间】:2017-07-26 13:27:29
【问题描述】:

我需要从 .NET 应用程序(不是 .NET Core 应用程序)获取 NuGet 存储其包的目录列表。

我知道默认情况下它在C:\Users\[YourUsername]\.nuget\packages 中,因此一个选项是迭代所有用户,假设运行该进程的当前 Windows 用户拥有访问其他用户数据的权利。此外,如果用户更改了此默认目录,我会卡住。

通过here 提供答案

nuget locals packages-cache -list

但它不是 .NET 代码,根据答案,它似乎是一个过时的选项。


此外,我想了解 .NET Core NuGet 包位置的逻辑,因为我可以在 3 个位置看到一些 .NET Core 包:

  • C:\Program Files\dotnet\shared\Microsoft.NETCore.App(不包含 AspNetCore 包)
  • C:\Users\[UserName]\.nuget\packages(确实包含 AspNetCore 包)
  • C:\Program Files (x86)\Microsoft SDKs\NuGetPackages(确实包含 AspNetCore 包)

【问题讨论】:

标签: .net nuget nuget-package


【解决方案1】:

为了实现这一点,您需要使用与nuget.exe 相同的代码和库:

  1. 将 nuget 包 NuGet.Configuration 安装到您的项目中
  2. 在文件顶部添加using NuGet.Configuration
  3. 使用以下代码(nuget.exe 在后台使用):
var settings = Settings.LoadDefaultSettings(null);
Console.WriteLine(SettingsUtility.GetGlobalPackagesFolder(settings));

您也可以使用ILSpy 检查nuget.exe 以了解其工作原理或使用github 上的相关源代码NuGet/NuGet.Client

【讨论】:

  • 我们现在没有时间对此进行测试,但听起来不错,并将发布我的尝试经验。同时我检查这个问题作为回答谢谢
猜你喜欢
  • 2012-02-20
  • 2012-08-20
  • 2019-01-11
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 2010-10-22
相关资源
最近更新 更多