Зеркалирование официального репозитория пакетов nuget

В моем рабочем месте у нас есть темпераментный прокси-сервер, который часто делает окно пакетов nuget непригодным (то же самое верно для командной строки nuget). Я начал копировать пакеты, которые мы чаще всего используем для локального зеркала на сетевом ресурсе, но делать это вручную стало утомительно. Я экспериментировал с использованием powershell, чтобы автоматически загружать пакеты, но, похоже, не может заставить urad odata отображать больше, чем несколько пакетов. Например, выполнив следующий запрос:

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

Должно возвращать 100 лучших пакетов с заголовком, начинающимся с 'O', но пакеты не возвращаются. Как ни странно, это прекрасно работает с именами пакетов, которые находятся в списке пакетов по умолчанию, нажав http://feed.nuget.org/ctp2/odata/v1/Packages. Я предполагаю, что происходит какой-то пейджинг, где я только просматриваю первую страницу. Игра с параметрами, которые я, кажется, не могу изменить на следующую страницу...

Кто-нибудь еще пытался это сделать? Кто-нибудь еще заметил таймауты/неудачные запросы с использованием nuget?

Ответы

Ответ 2

Мое предложение - использовать New-ODataServiceProxy или даже Doug Finke Проект PSOdata

С помощью только прокси-функции вы можете сделать это:

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

Ответ 3

Вам нужно быть осторожным при использовании строки в двойных кавычках. Попробуйте сначала оценить URL-адрес или только часть:

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

Побег знака доллара с обратным ходом.

Затем я попытался запросить сайт с (надеюсь) правильным URL-адресом, но результат результата не был возвращен. Так что - до сих пор не повезло и что-то не так с сервисом.