gpt4 book ai didi

nuget - 如何使用 nuget.core 获取包大小?

转载 作者:行者123 更新时间:2023-12-04 18:05:32 24 4
gpt4 key购买 nike

我想知道是否有办法在下载之前知道包的大小。我正在使用 nuget 包来部署组件,并且知道更新的大小将是一个不错的功能。

最佳答案

包大小在从 NuGet gallery package source 返回的响应中返回:

 <d:PackageSize m:type="Edm.Int64">223865</d:PackageSize>
不幸的是,您从 NuGet.Core.dll 返回的 Package 对象中不提供此 PackageSize。
要获取 PackageSize,一种方法是从 NuGet 的源代码中获取 DataServicePackageRepository 类和 DataServicePackage 类并修改它们,以便 PackageSize 属性可用于 DataServicePackage 对象。
public long PackageSize { get; set; }
我将这两个类重命名为 CustomDataServicePackageRepository 和 CustomDataServicePackage。
您可以在应用程序中包含这两个类,并通过将返回的 IPackage 转换为自定义 DataServicePackage 类然后访问 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 中显示百分比进度。

关于nuget - 如何使用 nuget.core 获取包大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com