我需要从 .NET 应用程序(不是 .NET Core 应用程序)获取 NuGet 存储其包的目录列表。
我知道默认情况下它位于C:\Users\[YourUsername]\.nuget\packages
因此,一个选项是迭代所有用户,假设运行该进程的当前 Windows 用户拥有访问其他用户数据的权限。此外,如果用户更改了此默认目录,我就会陷入困境。
已提供答案here https://stackoverflow.com/a/41533938/27194 through
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 包)
为了实现这一点,您需要使用相同的代码和库nuget.exe
does:
- 安装nuget包
NuGet.Configuration
到你的项目
- Add
using NuGet.Configuration
在你的文件的顶部
- 使用以下代码(其中
nuget.exe
在引擎盖下使用自己):
var settings = Settings.LoadDefaultSettings(null);
Console.WriteLine(SettingsUtility.GetGlobalPackagesFolder(settings));
您还可以使用以下命令检查 nuget.exeILSpy
了解它是如何工作的或使用 github 上的相关源代码NuGet/NuGet.Client https://github.com/NuGet/NuGet.Client
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)