我需要从.NET应用程序(不是.NET Core应用程序)获取NuGet存储其包的目录列表。
我知道默认情况下它位于C:\Users\[YourUsername]\.nuget\packages
中,因此选项是迭代所有用户,假设运行该进程的当前Windows用户拥有访问其他用户数据的权限。此外,如果用户更改了此默认目录,则表示卡住了。
通过
提供了答案herenuget 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包)答案 0 :(得分:8)
为了实现这一目标,您需要使用与nuget.exe
相同的代码和库:
NuGet.Configuration
安装到您的项目using NuGet.Configuration
nuget.exe
在引擎盖下使用自己的代码):var settings = Settings.LoadDefaultSettings(null);
Console.WriteLine(SettingsUtility.GetGlobalPackagesFolder(settings));
您还可以使用ILSpy
检查nuget.exe以了解其工作原理或在github上使用相关的源代码NuGet/NuGet.Client