public static async ValueTask <NuGetUIContext> CreateAsync( IServiceBroker serviceBroker, ISourceRepositoryProvider sourceRepositoryProvider, ISettings settings, IVsSolutionManager solutionManager, IPackageRestoreManager packageRestoreManager, IOptionsPageActivator optionsPageActivator, IUserSettingsManager userSettingsManager, IDeleteOnRestartManager deleteOnRestartManager, IEnumerable <IVsPackageManagerProvider> packageManagerProviders, INuGetLockService lockService, CancellationToken cancellationToken) { Assumes.NotNull(serviceBroker); Assumes.NotNull(sourceRepositoryProvider); Assumes.NotNull(settings); Assumes.NotNull(solutionManager); Assumes.NotNull(packageRestoreManager); Assumes.NotNull(optionsPageActivator); Assumes.NotNull(userSettingsManager); Assumes.NotNull(deleteOnRestartManager); Assumes.NotNull(packageManagerProviders); Assumes.NotNull(lockService); cancellationToken.ThrowIfCancellationRequested(); var solutionManagerServiceWrapper = new NuGetSolutionManagerServiceWrapper(); INuGetSolutionManagerService solutionManagerService = await GetSolutionManagerServiceAsync(serviceBroker, cancellationToken); // The initial Swap(...) should return a null implementation of the interface that does not require disposal. // However, there's no harm in following form. using (solutionManagerServiceWrapper.Swap(solutionManagerService)) { } var packageManager = new NuGetPackageManager( sourceRepositoryProvider, settings, solutionManager, deleteOnRestartManager); var actionEngine = new UIActionEngine( sourceRepositoryProvider, packageManager, lockService); return(new NuGetUIContext( sourceRepositoryProvider, serviceBroker, solutionManager, solutionManagerServiceWrapper, packageManager, actionEngine, packageRestoreManager, optionsPageActivator, userSettingsManager, packageManagerProviders)); }
private void OnAvailabilityChanged(object sender, BrokeredServicesChangedEventArgs e) { NuGetUIThreadHelper.JoinableTaskFactory.RunAsync(async() => { INuGetSolutionManagerService newService = await GetSolutionManagerServiceAsync( ServiceBroker, CancellationToken.None); using (_solutionManagerService.Swap(newService)) { } }) .PostOnFailure(nameof(NuGetUIContext), nameof(OnAvailabilityChanged)); }
public static async ValueTask <NuGetUIContext> CreateAsync( IServiceBroker serviceBroker, ISourceRepositoryProvider sourceRepositoryProvider, ISettings settings, IVsSolutionManager solutionManager, IPackageRestoreManager packageRestoreManager, IOptionsPageActivator optionsPageActivator, IUserSettingsManager userSettingsManager, IDeleteOnRestartManager deleteOnRestartManager, IEnumerable <IVsPackageManagerProvider> packageManagerProviders, INuGetLockService lockService, CancellationToken cancellationToken) { Assumes.NotNull(serviceBroker); Assumes.NotNull(sourceRepositoryProvider); Assumes.NotNull(settings); Assumes.NotNull(solutionManager); Assumes.NotNull(packageRestoreManager); Assumes.NotNull(optionsPageActivator); Assumes.NotNull(userSettingsManager); Assumes.NotNull(deleteOnRestartManager); Assumes.NotNull(packageManagerProviders); Assumes.NotNull(lockService); cancellationToken.ThrowIfCancellationRequested(); var solutionManagerServiceWrapper = new NuGetSolutionManagerServiceWrapper(); INuGetSolutionManagerService solutionManagerService = await GetSolutionManagerServiceAsync(serviceBroker, cancellationToken); // The initial Swap(...) should return a null implementation of the interface that does not require disposal. // However, there's no harm in following form. using (solutionManagerServiceWrapper.Swap(solutionManagerService)) { } var sourceServiceWrapper = new NuGetSourcesServiceWrapper(); INuGetSourcesService sourceService = await GetSourceServiceAsync(serviceBroker, cancellationToken); using (sourceServiceWrapper.Swap(sourceService)) { } #pragma warning disable CA2000 // Dispose objects before losing scope - NuGetUIContext owns the instance and should dispose it. var searchService = await NuGetSearchServiceReconnector.CreateAsync(serviceBroker, NuGetUIThreadHelper.JoinableTaskFactory, cancellationToken); #pragma warning restore CA2000 // Dispose objects before losing scope var packageManager = new NuGetPackageManager( sourceRepositoryProvider, settings, solutionManager, deleteOnRestartManager); var actionEngine = new UIActionEngine( sourceRepositoryProvider, packageManager, lockService); return(new NuGetUIContext( serviceBroker, searchService.Object, solutionManager, solutionManagerServiceWrapper, packageManager, actionEngine, packageRestoreManager, optionsPageActivator, userSettingsManager, packageManagerProviders, sourceServiceWrapper)); }