Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can i get the release notes of a NuGet package with the official SDK in C#

I need to get the Release Notes stored in the metadata. This code seems to be able to read the metadata, however i dont know how to get to the release notes.

using NuGet.Common;
using NuGet.Protocol;
using NuGet.Protocol.Core.Types;
using NuGet.Versioning;


ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;

SourceCacheContext cache = new SourceCacheContext();
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
PackageMetadataResource resource = await repository.GetResourceAsync<PackageMetadataResource>();

IEnumerable<IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
    "Flexygo",
    includePrerelease: true,
    includeUnlisted: false,
    cache,
    logger,
    cancellationToken);

i am trying to get a String with the release notes using only the official SDK

like image 843
Victor Tercero Avatar asked Sep 17 '25 05:09

Victor Tercero


1 Answers

You can achieve the above using the Library NuGet.Client. Install the following library using your Nuget package manager console via the below code :

Install-Package NuGet.Client

If not you can alter your own code as per below to print all information extracted :

using NuGet.Common;
using NuGet.Protocol;
using NuGet.Protocol.Core.Types;
using System.Reflection;

class Program
{
    static async Task Main()
    {
        ILogger logger = NullLogger.Instance;
        CancellationToken cancellationToken = CancellationToken.None;

        SourceCacheContext cache = new SourceCacheContext();
        SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
        PackageMetadataResource resource = await repository.GetResourceAsync<PackageMetadataResource>();

        IEnumerable<IPackageSearchMetadata> packages = await resource.GetMetadataAsync(
            "Flexygo",
            includePrerelease: true,
            includeUnlisted: false,
            cache,
            logger,
            cancellationToken);


        foreach (var package in packages)
        {
            var packageMetadata = await resource.GetMetadataAsync(package.Identity, cache, logger, cancellationToken);
            var v = await packageMetadata.GetDeprecationMetadataAsync();
            Console.WriteLine("------------------------------------------------------------------");
            Console.WriteLine("Package Metadata: " + packageMetadata.Title.ToString());

            Type t = packageMetadata.GetType();
            PropertyInfo[] pi = t.GetProperties();
            foreach (PropertyInfo p in pi)
            {
                System.Console.WriteLine(p.Name + " : " + p.GetValue(packageMetadata));
            }
            Console.WriteLine("------------------------------------------------------------------");
        }
    }
}

enter image description here

like image 172
Selaka Nanayakkara Avatar answered Sep 18 '25 17:09

Selaka Nanayakkara