Dot-Net

如何以程式方式獲取 nuget 記憶體文件夾位置

  • July 26, 2017

我需要從 .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

  1. 將 nuget 包安裝NuGet.Configuration到您的項目中
  2. using NuGet.Configuration在文件頂部添加
  3. 使用以下程式碼(nuget.exe在引擎蓋下使用自身):
var settings = Settings.LoadDefaultSettings(null);
Console.WriteLine(SettingsUtility.GetGlobalPackagesFolder(settings));

您還可以檢查 nuget.exe 以ILSpy了解其工作原理或使用 github NuGet/NuGet.Client上的相關原始碼

引用自:https://stackoverflow.com/questions/45328400