public async Task <NuGet.Configuration.ICredentialService> GetCredentialServiceAsync() { // Initialize the credential providers. var credentialProviders = new List <ICredentialProvider>(); var webProxy = await _asyncServiceProvider.GetServiceAsync <SVsWebProxy, IVsWebProxy>(); TryAddCredentialProviders( credentialProviders, Strings.CredentialProviderFailed_VisualStudioAccountProvider, () => { var importer = new VsCredentialProviderImporter( (exception, failureMessage) => LogCredentialProviderError(exception, failureMessage)); return(importer.GetProviders()); }); TryAddCredentialProviders( credentialProviders, Strings.CredentialProviderFailed_VisualStudioCredentialProvider, () => { Debug.Assert(webProxy != null); return(new ICredentialProvider[] { new VisualStudioCredentialProvider(webProxy) }); }); await TryAddCredentialProvidersAsync( credentialProviders, Strings.CredentialProviderFailed_PluginCredentialProvider, async() => await(new SecurePluginCredentialProviderBuilder(PluginManager.Instance, canShowDialog: true, logger: NullLogger.Instance).BuildAllAsync()) ); if (PreviewFeatureSettings.DefaultCredentialsAfterCredentialProviders) { TryAddCredentialProviders( credentialProviders, Strings.CredentialProviderFailed_DefaultCredentialsCredentialProvider, () => { return(new ICredentialProvider[] { new DefaultNetworkCredentialsCredentialProvider() }); }); } // can only interact when VS is not in server mode. bool nonInteractive = await VisualStudioContextHelper.IsInServerModeAsync(CancellationToken.None); // Initialize the credential service. var credentialService = new CredentialService( new AsyncLazy <IEnumerable <ICredentialProvider> >(() => System.Threading.Tasks.Task.FromResult((IEnumerable <ICredentialProvider>)credentialProviders)), nonInteractive: nonInteractive, handlesDefaultCredentials: PreviewFeatureSettings.DefaultCredentialsAfterCredentialProviders); return(credentialService); }
OutputConsoleProvider( IAsyncServiceProvider asyncServiceProvider, IEnumerable <Lazy <IHostProvider, IHostMetadata> > hostProviders) { _asyncServiceProvider = asyncServiceProvider ?? throw new ArgumentNullException(nameof(asyncServiceProvider)); _hostProviders = hostProviders ?? throw new ArgumentNullException(nameof(hostProviders)); _vsOutputWindow = new AsyncLazy <IVsOutputWindow>( async() => { return(await asyncServiceProvider.GetServiceAsync <SVsOutputWindow, IVsOutputWindow>()); }, NuGetUIThreadHelper.JoinableTaskFactory); _cachedOutputConsole = new AsyncLazy <IConsole>( async() => { if (await _isServerMode.GetValueAsync()) { // This is disposable, but it lives for the duration of the process. return(new ChannelOutputConsole( _asyncServiceProvider, GuidList.NuGetOutputWindowPaneGuid, Resources.OutputConsolePaneName, NuGetUIThreadHelper.JoinableTaskFactory)); } else { var vsUIShell = await asyncServiceProvider.GetServiceAsync <SVsUIShell, IVsUIShell>(); var vsOutputWindow = await _vsOutputWindow.GetValueAsync(); return(new OutputConsole(vsOutputWindow, vsUIShell)); } }, NuGetUIThreadHelper.JoinableTaskFactory); _isServerMode = new AsyncLazy <bool>( () => { return(VisualStudioContextHelper.IsInServerModeAsync(CancellationToken.None)); }, NuGetUIThreadHelper.JoinableTaskFactory); }