Получить версию пакета NuGet из удаленного хранилища, указанного URL, без использования NuGet.Core - PullRequest
0 голосов
/ 10 октября 2019

NuGet.Core устарела, я изо всех сил пытаюсь найти API для получения версии пакета NuGet из удаленного хранилища, указанного URL-адресом. Использование IPackageRepository было довольно простым, но я не понимаю, как это сделать без использования NuGet.Core?

Ответы [ 2 ]

2 голосов
/ 10 октября 2019

Редактировать: FactoryExtensionsV3.GetCoreV3, вероятно, ссылается на «NuGet версии 3», а не на API HTTP NuGet v3. Таким образом, этот код работает для локальных файловых каналов, а также для HTTP-каналов V2 и V3. Просто измените URL, переданный PackageSource.

static async Task Main(string[] args)
{
    var packageSource = new PackageSource("https://api.nuget.org/v3/index.json");
    var sourceRepository = new SourceRepository(packageSource, FactoryExtensionsV3.GetCoreV3(null));

    var metadata = await sourceRepository.GetResourceAsync<MetadataResource>();
    var cacheContext = new SourceCacheContext();
    var versions = await metadata.GetVersions("newtonsoft.json", cacheContext, NullLogger.Instance, CancellationToken.None);

    foreach (var version in versions)
    {
        Console.WriteLine("Found version " + version.ToNormalizedString());
    }
}
0 голосов
/ 10 октября 2019

Я создал пакет, облегчающий взаимодействие с серверами NuGet V3: https://github.com/loic-sharma/BaGet/tree/master/src/BaGet.Protocol#list-package-versions

NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");

IReadOnlyList<NuGetVersion>> versions = await client.ListPackageVersionsAsync("Newtonsoft.Json");

foreach (NuGetVersion version in versions)
{
    Console.WriteLine($"Found version: {version}");
}

Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы или предложения! :)

...