2011-01-14 26 views
15

En mi lugar de trabajo tenemos un servidor proxy temperamental que a menudo hace inutilizable la ventana de paquetes nuget (lo mismo es cierto para la línea de comandos nuget). Empecé a copiar los paquetes que usamos con mayor frecuencia a un espejo local en una red compartida, pero hacerlo manualmente se ha vuelto tedioso. He experimentado con el uso de powershell para descargar los paquetes automáticamente, pero parece que no puedo hacer que el odata uri muestre más que unos pocos paquetes. Por ejemplo ejecutando la consulta siguiente:Reflejando el repositorio de paquetes nuget oficial

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

debe devolver los 100 mejores paquetes que tienen un título que comienza con 'O', pero no se devuelven los paquetes. Extrañamente, esto funciona bien con los nombres de paquetes que están en la lista predeterminada de paquetes devueltos al tocar http://feed.nuget.org/ctp2/odata/v1/Packages. Estoy adivinando que hay algún tipo de búsqueda, donde solo estoy consultando sobre la primera página. Jugando con los parámetros, parece que no puedo cambiar a la siguiente página ...

¿Alguien más ha intentado hacer esto? ¿Alguien más ha notado tiempos de espera/solicitudes incorrectas usando nuget?

Respuesta

2

Debe tener cuidado al usar la cadena entre comillas dobles. Intente evaluar la url primero, o solo una parte:

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 

Escapar del signo de dólar con un contragolpe.

Luego traté de consultar el sitio con (con suerte) la URL correcta, pero no se devolvió ninguna entrada de resultado. Entonces, todavía no hubo suerte y podría haber algo mal con el servicio.

3

Mi sugerencia es utilizar el New-ODataServiceProxy o incluso de PSOdata project

Con sólo la función de proxy se puede hacer esto Doug Finke:

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 
Cuestiones relacionadas