Exemplo n.º 1
0
        async Task <IEnumerable <NuGetProjectAction> > PreviewUpdateAllPackagesAsync(
            SourceCacheContext sourceCacheContext,
            CancellationToken token)
        {
            solutionManager = projects.FirstOrDefault().GetSolutionManager();
            nugetProjects   = projects
                              .Select(project => project.CreateNuGetProject(solutionManager))
                              .ToList();

            var repositoryProvider = solutionManager.CreateSourceRepositoryProvider();

            packageManager = new NuGetPackageManager(
                repositoryProvider,
                solutionManager.Settings,
                solutionManager,
                new DeleteOnRestartManager());

            var repositories = repositoryProvider.GetRepositories(message.PackageSources);

            projectContext = new ConsoleHostNuGetProjectContext(
                solutionManager.Settings,
                message.FileConflictAction.ToFileConflictActionEnum());

            var resolutionContext = new ResolutionContext(
                message.DependencyBehavior.ToDependencyBehaviorEnum(),
                message.AllowPrerelease,
                false,
                message.VersionConstraints.ToVersionContrainsEnum(),
                new GatherCache(),
                sourceCacheContext
                );

            return(await packageManager.PreviewUpdatePackagesAsync(
                       nugetProjects,
                       resolutionContext,
                       projectContext,
                       repositories,
                       repositories,          // Update-Package does not use all enabled package sources.
                       token
                       ).ConfigureAwait(false));
        }
Exemplo n.º 2
0
        async Task <IEnumerable <NuGetProjectAction> > PreviewUpdatePackagesAsync(
            SourceCacheContext sourceCacheContext,
            CancellationToken token)
        {
            solutionManager = projects.FirstOrDefault().GetSolutionManager();
            nugetProjects   = projects
                              .Select(project => project.CreateNuGetProject(solutionManager))
                              .ToList();

            IsPackageInstalled = await CheckPackageInstalled(token);

            if (!IsPackageInstalled)
            {
                return(Enumerable.Empty <NuGetProjectAction> ());
            }

            var repositoryProvider = solutionManager.CreateSourceRepositoryProvider();

            packageManager = new NuGetPackageManager(
                repositoryProvider,
                solutionManager.Settings,
                solutionManager,
                new DeleteOnRestartManager());

            var enabledRepositories = repositoryProvider.GetEnabledRepositories();

            var repositories = repositoryProvider.GetRepositories(message.PackageSources);

            projectContext = new ConsoleHostNuGetProjectContext(
                solutionManager.Settings,
                message.FileConflictAction.ToFileConflictActionEnum());

            var resolutionContext = new ResolutionContext(
                message.DependencyBehavior.ToDependencyBehaviorEnum(),
                message.AllowPrerelease,
                false,
                message.VersionConstraints.ToVersionContrainsEnum(),
                new GatherCache(),
                sourceCacheContext
                );

            if (!string.IsNullOrEmpty(message.PackageVersion))
            {
                var packageVersion = NuGetVersion.Parse(message.PackageVersion);

                return(await packageManager.PreviewUpdatePackagesAsync(
                           new PackageIdentity (message.PackageId, packageVersion),
                           nugetProjects,
                           resolutionContext,
                           projectContext,
                           repositories,
                           enabledRepositories,
                           token
                           ).ConfigureAwait(false));
            }
            else
            {
                return(await packageManager.PreviewUpdatePackagesAsync(
                           message.PackageId,
                           nugetProjects,
                           resolutionContext,
                           projectContext,
                           repositories,
                           enabledRepositories,
                           token
                           ).ConfigureAwait(false));
            }
        }
        public async Task <IEnumerable <NuGetProjectAction> > PreviewInstallPackage(
            SourceCacheContext sourceCacheContext,
            CancellationToken token)
        {
            solutionManager = project.GetSolutionManager();
            nugetProject    = project.CreateNuGetProject(solutionManager);

            packageManager = new MonoDevelopNuGetPackageManager(solutionManager);

            var repositoryProvider = solutionManager.CreateSourceRepositoryProvider();
            var repositories       = repositoryProvider.GetRepositories(message.PackageSources);

            projectContext = new ConsoleHostNuGetProjectContext(
                solutionManager.Settings,
                message.FileConflictAction.ToFileConflictActionEnum());

            var dependencyBehavior = message.DependencyBehavior.ToDependencyBehaviorEnum();

            NuGetVersion version = null;

            if (string.IsNullOrEmpty(message.PackageVersion))
            {
                version = await GetLatestPackageVersion(repositories, dependencyBehavior, sourceCacheContext, token);
            }
            else
            {
                version = NuGetVersion.Parse(message.PackageVersion);
            }

            identity = new PackageIdentity(message.PackageId, version);

            var resolutionContext = new ResolutionContext(
                dependencyBehavior,
                message.AllowPrerelease,
                true,
                VersionConstraints.None,
                new GatherCache(),
                sourceCacheContext
                );

            try {
                return(await packageManager.PreviewInstallPackageAsync(
                           nugetProject,
                           identity,
                           resolutionContext,
                           projectContext,
                           repositories,
                           null,
                           token
                           ).ConfigureAwait(false));
            } catch (InvalidOperationException ex) {
                if (ex.InnerException is PackageAlreadyInstalledException)
                {
                    IsPackageAlreadyInstalled = true;
                    return(Enumerable.Empty <NuGetProjectAction> ());
                }
                else
                {
                    throw;
                }
            }
        }