2017-07-26 16 views
15

tôi cần phải nhận được từ một ứng dụng .NET (mà không phải là ứng dụng cốt lõi NET) danh sách các thư mục nơi lưu trữ NuGet gói của nó.Làm thế nào để có được những thư mục bộ nhớ cache NuGet vị trí lập trình

Tôi biết theo mặc định là trong C:\Users\[YourUsername]\.nuget\packages do đó, một tùy chọn là lặp qua tất cả người dùng giả sử người dùng Windows hiện tại chạy quy trình sở hữu quyền truy cập dữ liệu người dùng khác. Hơn nữa nếu dir mặc định này được thay đổi bởi người dùng tôi bị mắc kẹt.

Một câu trả lời được cung cấp thông qua here

nuget locals packages-cache -list 

nhưng nó không phải là mã NET và có vẻ như là một lựa chọn lỗi thời theo câu trả lời.


Hơn nữa tôi muốn hiểu được logic của gói địa điểm NET Lõi NuGet, vì tôi có thể nhìn thấy một số gói NET Core trong 3 địa điểm:

  • C:\Program Files\dotnet\shared\Microsoft.NETCore.App (không chứa AspNetCore gói)
  • C:\Users\[UserName]\.nuget\packages (làm chứa gói AspNetCore)
  • C:\Program Files (x86)\Microsoft SDKs\NuGetPackages (làm chứa gói AspNetCore)

Trả lời

7

Để đạt được điều này bạn cần phải sử dụng cùng mã và các thư viện như nuget.exe làm:

  1. Install NuGet gói NuGet.Configuration để dự án của bạn
  2. Thêm using NuGet.Configuration ở phía trên cùng của tập tin của bạn
  3. Sử dụng sau mã (mà nuget.exe sử dụng riêng của mình dưới mui xe):
var settings = Settings.LoadDefaultSettings(null); 
Console.WriteLine(SettingsUtility.GetGlobalPackagesFolder(settings)); 

Bạn cũng có thể kiểm tra nuget.exe với ILSpy để tìm hiểu cách thức hoạt động hoặc sử dụng mã nguồn có liên quan tại github NuGet/NuGet.Client

+0

Chúng tôi sẽ không có thời gian để kiểm tra ngay bây giờ nhưng có vẻ tốt và sẽ đăng bài về trải nghiệm của tôi điều này. Trong khi chờ đợi, tôi kiểm tra câu hỏi này –

Các vấn đề liên quan