public async Task RestoreMissingPackagesAsync (
			IEnumerable<INuGetAwareProject> projects,
			NuGetProjectContext context,
			CancellationToken token)
		{
			foreach (INuGetAwareProject project in projects) {
				await RestoreMissingPackagesAsync (project, context, token);
			}
		}
        async Task <List <InstallNuGetPackageAction> > CreatePackageActions(DotNetProject project, IEnumerable <TemplatePackageReference> packageReferences)
        {
            var repositoryProvider = SourceRepositoryProviderFactory.CreateSourceRepositoryProvider();
            var repositories       = repositoryProvider.GetRepositories().ToList();
            var solutionManager    = PackageManagementServices.Workspace.GetSolutionManager(project.ParentSolution);

            var installPackageActions = new List <InstallNuGetPackageAction> ();

            var context = new NuGetProjectContext(solutionManager.Settings)
            {
                FileConflictResolution = FileConflictAction.IgnoreAll
            };

            var dotNetProject     = new DotNetProjectProxy(project);
            var nugetProject      = solutionManager.GetNuGetProject(dotNetProject);
            var installedPackages = (await nugetProject.GetInstalledPackagesAsync(CancellationToken.None)).ToList();

            foreach (var packageReference in packageReferences)
            {
                var version = new NuGetVersion(packageReference.Version);

                if (!ShouldInstallPackage(packageReference.Id, version, installedPackages))
                {
                    continue;
                }

                var action = new InstallNuGetPackageAction(
                    repositories,
                    solutionManager,
                    dotNetProject,
                    context)
                {
                    LicensesMustBeAccepted = false,
                    OpenReadmeFile         = false,
                    PackageId = packageReference.Id,
                    Version   = version
                };

                installPackageActions.Add(action);
            }

            return(installPackageActions);
        }
        InstallNuGetPackageAction CreateInstallNuGetPackageAction(
            DotNetProject dotNetProject,
            ProjectTemplateSourceRepositoryProvider repositoryProvider,
            ProjectTemplatePackageReference packageReference)
        {
            var primaryRepositories   = repositoryProvider.GetRepositories(packageReference).ToList();
            var secondaryRepositories = GetSecondaryRepositories(primaryRepositories, packageReference);

            var context = new NuGetProjectContext {
                FileConflictResolution = FileConflictAction.IgnoreAll
            };

            return(new InstallNuGetPackageAction(
                       primaryRepositories,
                       secondaryRepositories,
                       PackageManagementServices.Workspace.GetSolutionManager(dotNetProject.ParentSolution),
                       new DotNetProjectProxy(dotNetProject),
                       context)
            {
                LicensesMustBeAccepted = packageReference.RequireLicenseAcceptance,
                OpenReadmeFile = false
            });
        }
 void DebugLogFormat(string format, params object[] args)
 {
     NuGetProjectContext.Log(MessageLevel.Debug, format, args);
 }
		IEnumerable<INuGetPackageAction> CreateInstallActions (
			IEnumerable<SourceRepository> repositories,
			Project project,
			IEnumerable<PackageManagementPackageReference> packages,
			bool licensesAccepted)
		{
			List<INuGetPackageAction> actions = null;

			Runtime.RunInMainThread (() => {
				var solutionManager = PackageManagementServices.Workspace.GetSolutionManager (project.ParentSolution);
				var dotNetProject = new DotNetProjectProxy ((DotNetProject)project);
				var context = new NuGetProjectContext ();

				actions = packages.Select (packageReference => {
					var action = new InstallNuGetPackageAction (
						repositories,
						solutionManager,
						dotNetProject,
						context);
					action.PackageId = packageReference.Id;
					action.Version = packageReference.GetNuGetVersion ();
					action.LicensesMustBeAccepted = !licensesAccepted;
					return (INuGetPackageAction)action;
				}).ToList ();
			}).Wait ();

			return actions;
		}