我想知道是否有方法在下載之前知道包的大小。我正在使用nuget包來部署組件,並且知道更新的大小將是一個很好的功能。如何用nuget.core獲取包的大小?
1
A
回答
0
封裝尺寸返回的響應從NuGet gallery package source回:
<d:PackageSize m:type="Edm.Int64">223865</d:PackageSize>
不幸的包裝尺寸是不能從包對象你從NuGet.Core.dll回來。
獲取PackageSize的一種方法是從NuGet的源代碼中獲取DataServicePackageRepository類和DataServicePackage類並對其進行修改,以便PackageSize屬性在DataServicePackage對象上可用。
public long PackageSize { get; set; }
我拿了這兩個類,並將它們重命名爲CustomDataServicePackageRepository和CustomDataServicePackage。
您可以將這兩個類包含在您的應用程序中,並通過將返回到您的自定義DataServicePackage類的IPackage強制轉換並訪問PackageSize屬性來使用它們。
var repo = new CustomDataServicePackageRepository(new Uri("https://www.nuget.org/api/v2/"));
var packages = repo.Search(null, false)
.Where(package => package.IsLatestVersion)
.OrderByDescending(package => package.DownloadCount)
.AsBufferedEnumerable(30)
.Where(package => package.IsReleaseVersion())
.Take(10);
foreach (IPackage package in packages) {
var dataServicePackage = package as CustomDataServicePackage;
long size = dataServicePackage == null ? -1 : dataServicePackage.PackageSize;
Console.WriteLine("Package: {0}, Size: {1}", package.ToString(), size);
}
NuGet本身不使用PackageSize。相反,它開始下載NuGet包並查看HTTP響應中返回的ContentLength以查找NuGet包的大小。然後這用於顯示Visual Studio中的百分比進度。
相關問題
- 1. 如何使用Nuget.Core獲取預發佈的軟件包列表?
- 2. 如何使用NuGet.Core創建NuGet包?
- 3. 如何獲取根的大小&&已使用的根的大小
- 4. 如何獲取QDockArea大小?
- 5. 如何獲取ImageRendition大小?
- 6. 獲取ARP數據包的大小
- 7. 獲取每種參數包的大小?
- 8. 如何獲取應用部件大小?
- 9. 如何使用Java獲取Ram大小和硬盤大小?
- 10. 如何獲取字符串的大小?
- 11. 如何獲取Azure的大小CloudBlobContainer
- 12. 如何獲取JList的大小?
- 13. 如何獲取String數組的大小
- 14. 如何獲取WAR文件的大小?
- 15. 如何獲取C文件的大小?
- 16. 如何獲取相交集的大小?
- 17. 如何獲取文件的大小
- 18. 如何獲取該內容的大小
- 19. 如何獲取UIImage的大小(KB)
- 20. 如何獲取HFile HBase表的大小?
- 21. 如何獲取QLPreviewView的內容大小?
- 22. 如何獲取文件夾的大小?
- 23. 如何獲取二叉樹的大小?
- 24. 如何獲取UINavigationController的內容大小?
- 25. 如何獲取視圖的大小?
- 26. Java:如何:有效地獲取2GB大小的文件大小?
- 27. 如何在iPhone中獲取圖像的大小(內存大小)?
- 28. 如何在NSString包含表情符號時獲取NSString大小?
- 29. 如何從CMFCPropertyFontProperty獲取字體大小
- 30. 如何在Android中獲取CardView大小?
太好了,謝謝 –
爲什麼nuget不提供默認的信息。我不相信我們應該編寫一些東西來獲得頁面的大小。 – batmaci