async Task RestoreAnyMissingPackages(CancellationToken cancellationToken)
        {
            var packages = await restoreManager.GetPackagesInSolutionAsync(
                solutionManager.SolutionDirectory,
                cancellationToken);

            var missingPackages = packages.Select(IsMissingForCurrentProject).ToList();

            if (missingPackages.Any())
            {
                using (var monitor = new PackageRestoreMonitor(restoreManager, packageManagementEvents)) {
                    using (var cacheContext = new SourceCacheContext()) {
                        var downloadContext = new PackageDownloadContext(cacheContext);
                        await restoreManager.RestoreMissingPackagesAsync(
                            solutionManager.SolutionDirectory,
                            project,
                            context,
                            downloadContext,
                            cancellationToken);
                    }
                }

                await RunInMainThread(() => dotNetProject.RefreshReferenceStatus());

                packageManagementEvents.OnPackagesRestored();
            }
        }
Exemple #2
0
        public async Task <bool> HasMissingPackages(CancellationToken cancellationToken = default(CancellationToken))
        {
            if (restoreManager != null)
            {
                var packages = await restoreManager.GetPackagesInSolutionAsync(
                    solutionManager.SolutionDirectory,
                    cancellationToken);

                packagesToRestore = packages.ToList();
            }

            if (buildIntegratedRestorer != null)
            {
                buildIntegratedProjectsToBeRestored = GetBuildIntegratedNuGetProjects().ToList();
            }

            if (nugetAwareRestorer != null)
            {
                var projects = await nugetAwareRestorer.GetProjectsRequiringRestore(nugetAwareProjects);

                nugetAwareProjectsToBeRestored = projects.ToList();
            }

            return(packagesToRestore?.Any(package => package.IsMissing) == true ||
                   buildIntegratedProjectsToBeRestored?.Any() == true ||
                   nugetAwareProjectsToBeRestored?.Any() == true);
        }