镜像官方nuget包存储库

时间:2011-01-14 20:20:21

标签: powershell nuget

在我的工作地点,我们有一个气质代理服务器,它经常使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的超时/错误请求?

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:3)

我的建议是使用New-ODataServiceProxy甚至Doug Finke的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

答案 2 :(得分: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

用反击来逃脱美元符号。

然后我尝试用(希望)正确的url查询网站,但没有返回结果条目。所以 - 仍然没有运气,服务可能出现问题。