build/Helper.cs (23 lines of code) (raw):
using NuGet.Common;
using NuGet.Protocol;
using NuGet.Protocol.Core.Types;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace Build
{
public class Helper
{
public static async Task<string> GetLatestPackageVersion(string packageId, int majorVersion, bool isPrerelease = false)
{
var repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
var resource = await repository.GetResourceAsync<PackageMetadataResource>();
var packages = await resource.GetMetadataAsync(packageId, includePrerelease: isPrerelease, includeUnlisted: false,
new SourceCacheContext(), NullLogger.Instance, CancellationToken.None);
var package = packages
.OrderByDescending(p => p.Identity.Version)
.FirstOrDefault(p => p.Identity.Version.Major == majorVersion);
return package?.Identity.Version.OriginalVersion;
}
}
}