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.
- Referenties worden opgehaald uit NuGet-configuratiebestanden (met behulp van de ingebouwde
SettingsCredentialProvider
). - Visual Studio-referentieproviders worden opeenvolgend geprobeerd.
- Probeer alle NuGet-platformoverschrijdende referentieproviders opeenvolgend te gebruiken.
- 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:
- 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
null
retourneren. - 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.