Я использую частный канал NuGet через Azure DevOps.
Чтобы увидеть информацию о publi c пакете NuGet из кода, нужно просто следовать документации здесь . В частности:
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(
"Newtonsoft.Json",
includePrerelease: true,
includeUnlisted: false,
cache,
logger,
Я пытаюсь добиться того же результата для своей личной ленты новостей, добавляя свои учетные данные в процесс:
var logger = NullLogger.Instance;
var cancellationToken = CancellationToken.None;
var cache = new SourceCacheContext();
var source = new PackageSource("*my feed*/nuget/v3/index.json");
source.Credentials = new PackageSourceCredential("*my feed*/nuget/v3/index.json", "*username*", "*password*", true, null);
var repository = Repository.Factory.GetCoreV2(source);
var resource = await repository.GetResourceAsync<PackageMetadataResource>();
IEnumerable<IPackageSearchMetadata> searchMetadata = await resource.GetMetadataAsync(
"My.Package.Name",
includePrerelease: true,
includeUnlisted: false,
cache,
logger,
cancellationToken);
Обратите внимание, что даже если я вызовите Factory.GetCoreV2()
, внутри метода все еще вызывается поставщик V3. Это просто единственный конструктор, который принимает PackageSource в качестве параметра:
public static SourceRepository GetCoreV2(this Repository.RepositoryFactory factory, PackageSource source)
{
return Repository.CreateSource(Repository.Provider.GetCoreV3(), source);
}
Однако, что бы я ни делал, я не могу пройти через шаг
var resource = await repository.GetResourceAsync<PackageMetadataResource>();
, который продолжает сбой с NuGet.Protocol.Core.Types.FatalProtocolException - 401 Unauthorised
. Я проверил действительность моих учетных данных и конечной точки канала, а также моих разрешений в канале (полный доступ). Я также попробовал процесс инициализации, описанный здесь (плюс шаг с моими учетными данными), но результат тот же.
Как я должен идентифицировать Azure DevOps канал из кода, чтобы можно было получить информацию IPackageMetadata?