Dot-Net
如何以程式方式獲取 nuget 記憶體文件夾位置
我需要從 .NET 應用程序(不是 .NET Core 應用程序)獲取 NuGet 儲存其包的目錄列表。
我知道預設情況下它是這樣的,
C:\Users\[YourUsername]\.nuget\packages因此一個選項是迭代所有使用者,假設執行該程序的目前 Windows 使用者擁有訪問其他使用者數據的權利。此外,如果使用者更改了此預設目錄,我將被卡住。答案在這里通過
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:
- 將 nuget 包安裝
NuGet.Configuration到您的項目中using NuGet.Configuration在文件頂部添加- 使用以下程式碼(
nuget.exe在引擎蓋下使用自身):var settings = Settings.LoadDefaultSettings(null); Console.WriteLine(SettingsUtility.GetGlobalPackagesFolder(settings));您還可以檢查 nuget.exe 以
ILSpy了解其工作原理或使用 github NuGet/NuGet.Client上的相關原始碼