2011-01-14 11 views
15

An meinem Arbeitsplatz haben wir einen temperamentvollen Proxy-Server, der das nuget-Paketfenster oft unbrauchbar macht (dasselbe gilt für die Kommandozeile nuget). Ich habe angefangen, die Pakete, die wir am häufigsten verwenden, in einen lokalen Spiegel einer Netzwerkfreigabe zu kopieren, aber dies manuell zu tun, ist mühsam geworden. Ich habe mit der Verwendung von Powershell experimentiert, um die Pakete automatisch herunterzuladen, aber ich kann nicht scheinen, dass das odata uri mehr als ein paar Pakete zeigt. Zum Beispiel läuft die folgende Abfrage:Spiegelung des offiziellen Paketpakets nugget

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

Sollte geben die Top-100-Pakete, die einen Titel, beginnend mit ‚O‘, aber keine Pakete zurückgegeben werden. Seltsamerweise funktioniert das gut mit Paketnamen, die in der Standardliste von Paketen sind, die durch das Treffen von http://feed.nuget.org/ctp2/odata/v1/Packages zurückgegeben werden. Ich bin Raten, dass es eine Art von Paging geht, wo ich nur über die erste Seite abfragen. Mit den Parametern zu spielen scheint nicht in der Lage zu sein, zur nächsten Seite zu wechseln ...

Hat jemand anderes versucht, dies zu tun? Hat jemand andere Timeouts/schlechte Anfragen mit nugget bemerkt?

Antwort

9

Jon Galloway einen PS-Skript geschrieben, die das gesamte Repository herunterlädt. Ich habe es auf ein paar Maschinen verwendet und es funktioniert gut für mich.

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

+0

Das ehrfürchtige Antwort war. Ich habe das ps-Skript benutzt. Später habe ich Nuget.Downloader verwendet. Aber heute habe ich herausgefunden, dass beide nicht arbeiten ... Also, Sir; Hast du eine aktualisierte Antwort für diese Frage? –

2

Sie müssen vorsichtig sein, wenn Sie Zeichenfolge in Anführungszeichen verwenden. Versuchen Sie, die URL zuerst oder nur einen Teil zu bewerten:

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 

Entfliehen Sie dem Dollarzeichen mit Backtick.

Dann habe ich versucht, die Website mit (hoffentlich) richtigen URL abzufragen, aber es wurde kein Ergebniseintrag zurückgegeben. Also - immer noch kein Glück und es könnte etwas mit dem Service nicht stimmen.

3

Mein Vorschlag ist, die New-ODataServiceProxy oder sogar Doug Finke PSOdata project

Mit nur der Proxy-Funktion zu verwenden, dies zu tun:

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