/// <summary> /// Initialization of the package; this method is called right after the package is sited, so this is the place /// where you can put all the initialization code that rely on services provided by VisualStudio. /// </summary> protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress) { await base.InitializeAsync(cancellationToken, progress); // Add our command handlers for menu (commands must exist in the .vsct file) await AddMenuCommandHandlersAsync(); // This instantiates a decoupled ICommand instance responsible to locate and display output pane by a UI control UI.Commands.ShowErrorsCommand = new ShowErrorsCommand(this); _vsMonitorSelection = new AsyncLazy <IVsMonitorSelection>( async() => { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); // get the UI context cookie for the debugging mode var vsMonitorSelection = await GetServiceAsync(typeof(IVsMonitorSelection)) as IVsMonitorSelection; Assumes.Present(vsMonitorSelection); // get the solution not building and not debugging cookie var guidCmdUI = VSConstants.UICONTEXT.SolutionExistsAndFullyLoaded_guid; vsMonitorSelection.GetCmdUIContextCookie( ref guidCmdUI, out _solutionExistsAndFullyLoadedContextCookie); guidCmdUI = VSConstants.UICONTEXT.SolutionExistsAndNotBuildingAndNotDebugging_guid; vsMonitorSelection.GetCmdUIContextCookie( ref guidCmdUI, out _solutionNotBuildingAndNotDebuggingContextCookie); guidCmdUI = VSConstants.UICONTEXT.SolutionExists_guid; vsMonitorSelection.GetCmdUIContextCookie( ref guidCmdUI, out _solutionExistsCookie); return(vsMonitorSelection); }, ThreadHelper.JoinableTaskFactory); IBrokeredServiceContainer brokeredServiceContainer = await this.GetServiceAsync <SVsBrokeredServiceContainer, IBrokeredServiceContainer>(); var lazySolutionManager = new AsyncLazy <IVsSolutionManager>(() => ServiceLocator.GetInstanceAsync <IVsSolutionManager>(), ThreadHelper.JoinableTaskFactory); var lazySettings = new AsyncLazy <ISettings>(() => ServiceLocator.GetInstanceAsync <ISettings>(), ThreadHelper.JoinableTaskFactory); var nuGetBrokeredServiceFactory = new NuGetBrokeredServiceFactory(lazySolutionManager, lazySettings); brokeredServiceContainer.Proffer(NuGetServices.NuGetProjectServiceV1, nuGetBrokeredServiceFactory.CreateNuGetProjectServiceV1); }
private async Task RunSolutionRestoreAsync() { var cancellationTokenSource = new CancellationTokenSource(); _cancelBuildToken = cancellationTokenSource; try { await GetAndActivatePackageManagerOutputWindowAsync(); await TaskScheduler.Default; SB.IBrokeredServiceContainer serviceContainer = await _asyncServiceProvider.GetServiceAsync <SB.SVsBrokeredServiceContainer, SB.IBrokeredServiceContainer>(); IServiceBroker serviceBroker = serviceContainer.GetFullAccessServiceBroker(); INuGetSolutionService nugetSolutionService = await serviceBroker.GetProxyAsync <INuGetSolutionService>(NuGetServices.SolutionService); try { await nugetSolutionService.RestoreSolutionAsync(cancellationTokenSource.Token); } finally { (nugetSolutionService as IDisposable)?.Dispose(); } } catch (Exception e) { // Only log to the activity log for now // TODO: https://github.com/NuGet/Home/issues/9352 ActivityLog.LogError("NuGet Package Manager", e.Message); } finally { cancellationTokenSource.Dispose(); _cancelBuildToken = null; } }