У меня есть имя и версия пакета nuget, и мне нужно извлечь текст лицензии для каждого пакета.
Мне удалось прочитать URL лицензии, прочитав несколько блогов, но в целом документация действительно скудная.Поскольку URL лицензии устарел, я должен зачитать информацию о самой лицензии.Но с таким подходом, который я выбрал, это кажется невозможным:
public static async Task<IPackageSearchMetadata> GetNugetPackageMetaData(string name, string version)
{
//workaround for beta/alpha
if (version.Contains("-"))
{
int dashIndex = version.IndexOf("-");
version = version.Substring(0, dashIndex);
}
int[] versions = Array.ConvertAll(version.Split("."), int.Parse);
NuGetVersion nuGetVersion = new NuGetVersion(versions[0], versions[1], versions[2]);
PackageIdentity packageIdentity = new PackageIdentity(name, nuGetVersion);
List<Lazy<INuGetResourceProvider>> providers = new List<Lazy<INuGetResourceProvider>>();
providers.AddRange(Repository.Provider.GetCoreV3()); // Add v3 API support
PackageSource packageSource = new PackageSource("https://api.nuget.org/v3/index.json");
SourceRepository sourceRepository = new SourceRepository(packageSource, providers);
PackageMetadataResource packageMetadataResource = await sourceRepository.GetResourceAsync<PackageMetadataResource>();
IPackageSearchMetadata searchMetadata =
await packageMetadataResource.GetMetadataAsync(packageIdentity, new SourceCacheContext(), NullLogger.Instance, CancellationToken.None);
return searchMetadata;
}
Есть ли другая возможность получить текст лицензии с помощью nugetv3 или даже лучше, всего файла nuspec?