Delen via


Feeds verifiëren in Visual Studio met NuGet-referentieproviders

De NuGet Visual Studio-extensie 3.6+ ondersteunt referentieproviders, waardoor NuGet kan werken met geverifieerde feeds. Nadat u een NuGet-referentieprovider voor Visual Studio hebt geïnstalleerd, verkrijgt de NuGet Visual Studio-extensie automatisch referenties voor geverifieerde feeds en vernieuwt deze indien nodig.

Een voorbeeldimplementatie vindt u in de vsCredentialProvider-voorbeeld-.

In Visual Studio maakt NuGet gebruik van een interne VsCredentialProviderImporter die ook scant op invoegtoepassingsreferentieproviders. Deze plug-in referentieaanbieders moeten herkenbaar zijn als een MEF-export van het type IVsCredentialProvider.

Vanaf versie 4.8+ ondersteunt NuGet in Visual Studio ook de nieuwe invoegtoepassingen voor platformonafhankelijke authenticatie, maar ze zijn niet de aanbevolen aanpak vanwege prestatieredenen.

Notitie

NuGet-referentieproviders voor Visual Studio moeten worden geïnstalleerd als een reguliere Visual Studio-extensie en vereisen Visual Studio 2017 of hoger.

NuGet-authenticatievoorzieningen voor Visual Studio werken alleen in Visual Studio (niet in dotnet herstellen of nuget.exe). Voor referentieproviders met nuget.exe, zie nuget.exe Referentieproviders. Zie voor verificatieproviders in dotnet en msbuild platformonafhankelijke plugins voor NuGet

Een NuGet-referentieprovider maken voor Visual Studio

De NuGet Visual Studio-extensie 3.6+ implementeert een interne CredentialService die wordt gebruikt om referenties te verkrijgen. De CredentialService heeft een lijst met ingebouwde en plug-in credential providers. Elke provider wordt opeenvolgend geprobeerd totdat referenties worden verkregen.

Tijdens het verwerven van inloggegevens zal de inloggegevensservice de inloggegevensproviders in de volgende volgorde proberen, waarbij deze stopt zodra inloggegevens zijn verkregen.

  1. Referenties worden opgehaald uit NuGet-configuratiebestanden (met behulp van de ingebouwde SettingsCredentialProvider).
  2. Visual Studio-referentieproviders worden opeenvolgend geprobeerd.
  3. Probeer alle NuGet-platformoverschrijdende referentieproviders opeenvolgend te gebruiken.
  4. Als er nog geen referenties zijn verkregen, wordt de gebruiker gevraagd om referenties via een standaarddialoogvenster voor basisverificatie.

IVsCredentialProvider.GetCredentialsAsync implementeren

Als u een NuGet-referentieprovider voor Visual Studio wilt maken, maakt u een Visual Studio-extensie waarmee een openbare MEF-export wordt weergegeven die het IVsCredentialProvider-type implementeert en voldoet aan de onderstaande principes.

public interface IVsCredentialProvider
{
    Task<ICredentials> GetCredentialsAsync(
        Uri uri,
        IWebProxy proxy,
        bool isProxyRequest,
        bool isRetry,
        bool nonInteractive,
        CancellationToken cancellationToken);
}

Een voorbeeldimplementatie vindt u in de vsCredentialProvider-voorbeeld-.

Elke NuGet-referentieprovider voor Visual Studio moet:

  1. Bepaal of er referenties beschikbaar zijn voor de doel-URI voordat u referenties verwerft. Als de provider geen referenties kan opgeven voor de doelbron, moet deze nullretourneren.
  2. Als de provider aanvragen voor de doel-URI verwerkt, maar geen referenties kan opgeven, moet er een uitzondering worden gegenereerd.

Een aangepaste NuGet-referentieprovider voor Visual Studio moet de IVsCredentialProvider-interface implementeren die beschikbaar is in het NuGet.VisualStudio-pakket.

GetCredentialAsync

Invoerparameter Beschrijving
URI-URI De pakketbron-URI waarvoor referenties worden aangevraagd.
IWebProxy-proxy Webproxy die moet worden gebruikt bij het communiceren op het netwerk. Null als er geen proxyverificatie is geconfigureerd.
bool isProxyRequest Is waar als deze aanvraag is om referenties voor proxyverificatie op te halen. Als de implementatie niet geldig is voor het verkrijgen van proxyreferenties, moet null worden geretourneerd.
bool isRetry Waar indien er eerder inloggegevens zijn aangevraagd voor deze URI, maar de opgegeven inloggegevens geen geautoriseerde toegang verleenden.
bool niet-interactief Indien waar, moet de referentieprovider alle gebruikersprompts onderdrukken en in plaats daarvan standaardwaarden gebruiken.
CancellationToken cancellationToken Dit annuleringstoken moet worden gecontroleerd om te bepalen of de bewerking die om referenties vraagt, is geannuleerd.

Retourwaarde: een referentieobject dat de System.Net.ICredentials interfaceimplementeert.