2011-01-14 34 views
15

Tại nơi làm việc của chúng tôi, chúng tôi có một máy chủ proxy thường làm cho cửa sổ gói nuget không sử dụng được (điều này cũng đúng với dòng lệnh nuget). Tôi đã bắt đầu sao chép các gói chúng tôi sử dụng thường xuyên nhất cho một máy nhân bản địa phương trên một mạng chia sẻ, nhưng làm điều này bằng tay đã trở nên tẻ nhạt. Tôi đã thử nghiệm bằng cách sử dụng PowerShell để tải về các gói tự động, nhưng dường như không thể có được uri odata để hiển thị nhiều hơn một vài gói. Ví dụ: chạy truy vấn sau:Phản chiếu kho lưu trữ gói chính thức

$feed = [xml]$webClient.DownloadString("http://feed.nuget.org/ctp2/odata/v1/Packages?$filter=startswith(Title,'O') eq true&$top=100") 

Nên trả lại 100 gói hàng đầu có tiêu đề bắt đầu bằng 'O', nhưng không trả lại gói nào. Điều kỳ lạ này hoạt động tốt với tên gói có trong danh sách mặc định của các gói được trả lại bằng cách nhấn http://feed.nuget.org/ctp2/odata/v1/Packages. Tôi đang đoán rằng có một số loại phân trang đang diễn ra, nơi tôi chỉ truy vấn trên trang đầu tiên. Chơi với các thông số tôi dường như không thể thay đổi sang trang tiếp theo ...

Có ai khác đã cố thực hiện việc này không? Có ai khác nhận thấy thời gian chờ/yêu cầu xấu bằng nuget không?

Trả lời

9

Jon Galloway gửi một kịch bản PS mà tải toàn bộ kho lưu trữ. Tôi đã sử dụng nó trên một vài máy và nó hoạt động tuyệt vời cho tôi.

http://weblogs.asp.net/jongalloway/downloading-a-local-nuget-repository-with-powershell

+0

Đó là câu trả lời tuyệt vời. Tôi đã sử dụng tập lệnh ps. Sau đó tôi sử dụng Nuget.Downloader. Nhưng hôm nay tôi đã tìm thấy, cả hai đều không làm việc ... Vì vậy, thưa bạn; bạn có câu trả lời được cập nhật cho câu hỏi này không? –

2

Bạn cần phải cẩn thận khi sử dụng chuỗi trong dấu ngoặc kép. Trước tiên, hãy thử đánh giá url hoặc chỉ một phần:

PS> "?$filter=startswith(Title,'O') eq true&$top=100" 
?=startswith(Title,'O') eq true&=100 

PS> "?`$filter=startswith(Title,'O') eq true&`$top=100" 
?$filter=startswith(Title,'O') eq true&$top=100 

Thoát dấu đô la bằng dấu gạch chéo ngược.

Sau đó, tôi đã cố gắng truy vấn trang web với (hy vọng) đúng url, nhưng không có mục nhập kết quả nào được trả lại. Vì vậy - vẫn không có may mắn và có thể có điều gì đó sai trái với dịch vụ.

3

Đề nghị của tôi là sử dụng New-ODataServiceProxy hoặc thậm chí Doug Finke của PSOdata project

Chỉ với chức năng proxy bạn có thể làm điều này:

New-ODataServiceProxy http://packages.nuget.org/v1/FeedService.svc/ NuGet 
# Chain up calls to AddQueryOption (please excuse my line wrapping): 
$NuGet.Packages.AddQueryOption('$filter',"startswith(Title,'O') eq true" 
      ).AddQueryOption('$top','3') | 
Format-Table Id, Version, Authors, Description -Wrap -Auto 
Các vấn đề liên quan