2017-07-26 88 views
15

我需要從.NET應用程序(不是.NET Core應用程序)獲取NuGet存儲其包的目錄列表。如何以編程方式獲取nuget緩存文件夾位置

我知道默認情況下它在C:\Users\[YourUsername]\.nuget\packages,所以一個選項是迭代所有用戶,假設當前運行該進程的Windows用戶擁有訪問其他用戶數據的權限。此外,如果此默認目錄由用戶更改,我卡住了。

的答案提供here通過

nuget locals packages-cache -list 

但它不是.NET代碼,它似乎根據的答案是一個過時的選擇。


而且我想了解.NET核心的NuGet包位置的邏輯,因爲我可以在3個地點看到一些.NET核心包:

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

回答

7

爲了實現這一點,你需要使用相同的代碼和庫nuget.exe做:

  1. 安裝NuGet包NuGet.Configuration到項目
  2. 在你的文件
  3. 使用的頂部添加using NuGet.Configuration的下面的代碼(其nuget.exe使用本身罩下):
var settings = Settings.LoadDefaultSettings(null); 
Console.WriteLine(SettingsUtility.GetGlobalPackagesFolder(settings)); 

你也可以用ILSpy來檢查nuget.exe,看看它是如何工作的或者在github上使用相關的源代碼NuGet/NuGet.Client

+0

我們現在沒有時間去測試它,但它聽起來很不錯,這個。同時我檢查這個問題,回答謝謝 –

相關問題