Exemple #1
0
        public void RestorePackages(Project project)
        {
            const string eventName = nameof(IVsPackageRestorer) + "." + nameof(RestorePackages);

            using var _ = NuGetETW.ExtensibilityEventSource.StartStopEvent(eventName);

            try
            {
                var solutionDirectory   = _solutionManager.SolutionDirectory;
                var nuGetProjectContext = new EmptyNuGetProjectContext();

                // We simply use ThreadHelper.JoinableTaskFactory.Run instead of PumpingJTF.Run, unlike,
                // VsPackageInstaller and VsPackageUninstaller. Because, no powershell scripts get executed
                // as part of the operations performed below. Powershell scripts need to be executed on the
                // pipeline execution thread and they might try to access DTE. Doing that under
                // ThreadHelper.JoinableTaskFactory.Run will consistently result in the UI stop responding
                _threadingService.JoinableTaskFactory.Run(() =>
                                                          _restoreManager.RestoreMissingPackagesInSolutionAsync(solutionDirectory,
                                                                                                                nuGetProjectContext,
                                                                                                                NullLogger.Instance,
                                                                                                                CancellationToken.None));
            }
            catch (Exception exception)
            {
                _telemetryProvider.PostFault(exception, typeof(VsPackageRestorer).FullName);
            }
        }
Exemple #2
0
        async Task ExecuteAsync(CancellationToken cancellationToken)
        {
            await PrepareForExecute();

            if (restoreManager != null && RestorePackagesConfigProjects)
            {
                using (var monitor = new PackageRestoreMonitor(restoreManager)) {
                    await restoreManager.RestoreMissingPackagesInSolutionAsync(
                        solutionManager.SolutionDirectory,
                        new NuGetProjectContext (solutionManager.Settings),
                        cancellationToken);
                }
            }

            if (buildIntegratedRestorer != null)
            {
                await buildIntegratedRestorer.RestorePackages(
                    GetBuildIntegratedNuGetProjects(),
                    cancellationToken);
            }

            if (nugetAwareRestorer != null)
            {
                await nugetAwareRestorer.RestoreMissingPackagesAsync(
                    nugetAwareProjects,
                    new NuGetProjectContext (solutionManager.Settings),
                    cancellationToken);
            }

            await Runtime.RunInMainThread(() => RefreshProjectReferences());

            packageManagementEvents.OnPackagesRestored();
        }
Exemple #3
0
        public void RestorePackages(Project project)
        {
            NuGetPackageManager packageManager = new NuGetPackageManager(_sourceRepositoryProvider, _settings, _solutionManager);

            try
            {
                PackageManagementHelpers.RunSync(async() => await _restoreManager.RestoreMissingPackagesInSolutionAsync(CancellationToken.None));
            }
            catch (Exception ex)
            {
                ExceptionHelper.WriteToActivityLog(ex);
            }
        }
Exemple #4
0
        private async System.Threading.Tasks.Task RestorePackages()
        {
            TaskScheduler uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();

            try
            {
                await _packageRestoreManager.RestoreMissingPackagesInSolutionAsync(CancellationToken.None);

                // Check for missing packages again
                await _packageRestoreManager.RaisePackagesMissingEventForSolution(CancellationToken.None);
            }
            catch (Exception ex)
            {
                ShowErrorUI(ex.Message);
            }

            NuGetEventTrigger.Instance.TriggerEvent(NuGetEvent.PackageRestoreCompleted);
        }
Exemple #5
0
        public async Task <bool> UIRestorePackagesAsync(CancellationToken token)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            ShowProgressUI();
            OperationId = Guid.NewGuid();

            try
            {
                _packageRestoreManager.PackageRestoreFailedEvent += PackageRestoreFailedEvent;
                string solutionDirectory = await _solutionManager.GetSolutionDirectoryAsync(token);

                await _packageRestoreManager.RestoreMissingPackagesInSolutionAsync(solutionDirectory,
                                                                                   this,
                                                                                   new LoggerAdapter(this),
                                                                                   token);

                if (_restoreException == null)
                {
                    // when the control is first loaded, check for missing packages
                    await _packageRestoreManager.RaisePackagesMissingEventForSolutionAsync(solutionDirectory, token);
                }
                else
                {
                    ShowErrorUI(_restoreException.Message);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                ShowErrorUI(ex.Message);
                return(false);
            }
            finally
            {
                _packageRestoreManager.PackageRestoreFailedEvent -= PackageRestoreFailedEvent;
                _restoreException = null;
            }

            NuGetEventTrigger.Instance.TriggerEvent(NuGetEvent.PackageRestoreCompleted);
            return(true);
        }
Exemple #6
0
        public async Task <bool> UIRestorePackagesAsync(CancellationToken token)
        {
            await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            ShowProgressUI();
            OperationId = Guid.NewGuid();

            try
            {
                _packageRestoreManager.PackageRestoreFailedEvent += PackageRestoreFailedEvent;
                string solutionDirectory = await _solutionManager.GetSolutionDirectoryAsync(token);

                await _packageRestoreManager.RestoreMissingPackagesInSolutionAsync(solutionDirectory,
                                                                                   this,
                                                                                   new LoggerAdapter(this),
                                                                                   token);

                if (_restoreException == null)
                {
                    await _packageRestoreManager.RaisePackagesMissingEventForSolutionAsync(solutionDirectory, token);
                }
                else
                {
                    ShowErrorUI(_restoreException.Message);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                ShowErrorUI(ex.Message);
                return(false);
            }
            finally
            {
                _packageRestoreManager.PackageRestoreFailedEvent -= PackageRestoreFailedEvent;
                _restoreException = null;
            }

            return(true);
        }
        public void RestorePackages(Project project)
        {
            try
            {
                var solutionDirectory   = _solutionManager.SolutionDirectory;
                var nuGetProjectContext = new EmptyNuGetProjectContext();

                // We simply use ThreadHelper.JoinableTaskFactory.Run instead of PumpingJTF.Run, unlike,
                // VsPackageInstaller and VsPackageUninstaller. Because, no powershell scripts get executed
                // as part of the operations performed below. Powershell scripts need to be executed on the
                // pipeline execution thread and they might try to access DTE. Doing that under
                // ThreadHelper.JoinableTaskFactory.Run will consistently result in a hang
                NuGetUIThreadHelper.JoinableTaskFactory.Run(() =>
                                                            _restoreManager.RestoreMissingPackagesInSolutionAsync(solutionDirectory,
                                                                                                                  nuGetProjectContext,
                                                                                                                  CancellationToken.None));
            }
            catch (Exception ex)
            {
                ExceptionHelper.WriteErrorToActivityLog(ex);
            }
        }