2011-01-14 56 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