15

在我工作的地方,我们有一个喜怒无常的代理服务器,它经常使 nuget 包窗口无法使用(对于 nuget 命令行也是如此)。我已经开始将我们最常使用的软件包复制到网络共享上的本地镜像中,但是手动执行此操作变得乏味。我已经尝试使用 powershell 自动下载包,但似乎无法让 odata uri 显示多个包。例如运行以下查询:

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

应返回标题以“O”开头的前 100 个包,但不返回任何包。奇怪的是,这适用于通过点击返回的默认包列表中的包名称http://feed.nuget.org/ctp2/odata/v1/Packages。我有某种分页正在进行,我只查询第一页。玩参数我似乎无法更改到下一页...

有没有其他人尝试过这样做?有没有其他人注意到使用 nuget 的超时/错误请求?

4

3 回答 3

9

Jon Galloway 发布了一个下载整个存储库的 PS 脚本。我已经在几台机器上使用过它,它对我来说效果很好。

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

于 2011-02-13T00:52:40.983 回答
3

我的建议是使用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
于 2011-01-17T16:30:49.877 回答
2

在双引号中使用字符串时需要小心。尝试先评估 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 查询该站点,但没有返回任何结果条目。所以 - 仍然没有运气,服务可能有问题。

于 2011-01-16T21:34:42.373 回答