MVC 3 RC 出来了一段时间了,最近在研究NuGet。觉得每次安装包的时候,都需要联网。有些麻烦。
可以使用下面的代码来下载所需要全部的包。
代码如下:
代码
$webClient
=
New
-
Object System.Net.WebClient
$feed = [xml]$webClient.DownloadString( " http://feed.nuget.org/ctp2/odata/v1/Packages " )
$destinationDirectory = " 本地的路径 "
$records = $feed | select - ExpandProperty feed | select - ExpandProperty entry | select - ExpandProperty content
for ($i = 0 ; $i - lt $records.Length; $i ++ ) {
$url = $records[$i].src
$startOfQuery = $url.IndexOf( " ?p= " ) + 3
$fileName = $url.Substring($startOfQuery, $url.Length - $startOfQuery)
$fullPath = ($destinationDirectory + " \ " + $fileName)
$webClient.DownloadFile($records[$i].src, ($destinationDirectory + " \ " + $fileName))
}
$feed = [xml]$webClient.DownloadString( " http://feed.nuget.org/ctp2/odata/v1/Packages " )
$destinationDirectory = " 本地的路径 "
$records = $feed | select - ExpandProperty feed | select - ExpandProperty entry | select - ExpandProperty content
for ($i = 0 ; $i - lt $records.Length; $i ++ ) {
$url = $records[$i].src
$startOfQuery = $url.IndexOf( " ?p= " ) + 3
$fileName = $url.Substring($startOfQuery, $url.Length - $startOfQuery)
$fullPath = ($destinationDirectory + " \ " + $fileName)
$webClient.DownloadFile($records[$i].src, ($destinationDirectory + " \ " + $fileName))
}
使用时,只需要修改下本地的路径即可。
在VS2010中的设置,就是Tools->Options->Package Manager,Name随便指定一个,Source填本地的路径,点击Add后,在上面的列表选中新添加设置为默认项即可。
想实现增量下载,只需要在处理的时候,判定下指定的文件名是否存在即可。因为现有的打包的格式是按照包的版本号打包的。打包的格式为ZIP格式。如果指定的文件不存在再下载。