2011-01-14 46 views
15

在我工作的地方,我們有一個喜怒無常的代理服務器,這往往使的NuGet包窗口不可用(同樣是對的NuGet命令行真)。我已經開始將我們最常使用的軟件包複製到網絡共享上的本地鏡像中,但手動完成這些操作變得乏味。我已經嘗試過使用powershell自動下載軟件包,但似乎無法讓odata uri顯示更多的軟件包。例如運行下面的查詢:鏡像官方的NuGet包庫

$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

你需要用雙引號字符串使用時要小心。嘗試先評估網址,或者只評估一部分網址:

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 

用反色標逃避美元符號。

然後我試圖與查詢(希望)是正確的網址網站,但沒有返回結果條目。所以 - 仍然沒有運氣,服務可能會出現問題。

3

我的建議是使用New-ODataServiceProxy甚至是道格·芬克的PSOdata project

只需代理功能,你可以這樣做:

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 
相關問題