2016-06-14 2 views
1

Я пытаюсь использовать Nuget.Core для доступа к фиду nuget, и у меня есть поставщик учетных данных, но я все еще получаю 401 неавторизованный. Какие шаги мне нужно предпринять, чтобы заставить nuget.core использовать поставщиков учетных данных и получить доступ программно. Спасибо.Как получить провайдеры учетных данных, настроенные с помощью NuGet.core?

ответ

0

Если вы используете сборку NuGet.Core, вам нужно будет создать или использовать класс, который реализует интерфейс NuGet.ICredentialProvider.

using System; 
using System.Net; 
using NuGet; 

namespace Test 
{ 
    class MyCredentialProvider : ICredentialProvider 
    { 
     public ICredentials GetCredentials(Uri uri, IWebProxy proxy, CredentialType credentialType, bool retrying) 
     { 
      // TODO return the credentials... 
      throw new NotImplementedException(); 
     } 
    } 
} 

Затем создать экземпляр этого класса и присвоить его NuGet.HttpClient.

NuGet.HttpClient.DefaultCredentialProvider = new MyCredentialProvider(); 

Также NuGet обеспечивает SettingsCredentialProvider класс, который вы можете использовать, если вы храните ваши учетные данные в файле NuGet.Config. SettingsCredentialProvider принимает экземпляр ICredentialProvider в своем конструкторе, поэтому вы можете передать свою собственную реализацию, если хотите, чтобы она использовалась, если в файле NuGet.Config не обнаружено никаких учетных данных. Или вместо этого вы передаете NullCredentialProvider в класс SettingsCredentialProvider, если вы хотите использовать информацию, хранящуюся в файле NuGet.Config, который будет использоваться.

+0

Спасибо за ответ. Итак, для этого класса, что я использую для возврата из метода getCredentials()? Поставщик учетных данных, который у меня есть, был указан в разделе «https: // {account] .pkgs.visualstudio.com/_apis/public/nuget/client/CredentialProviderBundle.zip». Я загрузил его, и у него был файл .VSS и NuGet.exe. Я не уверен, куда идти оттуда или как использовать это, чтобы создать класс, который вы упомянули. –

+0

Ну, это совсем другое. Из вашего первоначального вопроса я думал, что вы пытаетесь использовать NuGet.Core из своего приложения, не используя поставщиков учетных данных, предоставленных Microsoft. Эти поставщики учетных данных работают с NuGet 3 и автоматически выбираются и используются NuGet 3. Существует документация по [с использованием этих поставщиков учетных данных] (https://docs.nuget.org/consume/credential-providers), которые в основном являются исполняемыми файлами, которые NuGet.exe вызывается, чтобы найти имя пользователя и пароль. –

+0

Спасибо! Это помогло мне сделать это из консоли диспетчера пакетов. Еще один вопрос: есть ли способ программно использовать команды «Get-Package -Source» nuget-feed «-ListAvailable»? Единственное, что я мог найти, это команды powershell и cmd, такие как echo. –