private async Task RestorePackagesForSolutionAsync(ISolutionProjectModel projectViewModel, IServiceSettings settings, CancellationToken cancellationToken)
        {
            if (!IsCancelled(projectViewModel, cancellationToken))
            {
                NugetServiceSettings nugetServiceSettings = settings.GetSettingsFromProvider <NugetServiceSettings>(projectViewModel);
                using (new PauseCheckedActionScope(() => projectViewModel.CurrentOperation = Operations.NugetRestore, () => projectViewModel.CurrentOperation = Operations.None, cancellationToken))
                {
                    var externalActionService = serviceProvider.Get <ExternalActionService>();
                    await externalActionService.RunExternalPreActions(projectViewModel, this, cancellationToken : cancellationToken);

                    if (nugetServiceSettings.NugetAction == NugetAction.Restore || nugetServiceSettings.NugetAction == NugetAction.InstallAndRestore)
                    {
                        await NugetRestoreAsync(projectViewModel, settings, cancellationToken);
                    }
                    if (nugetServiceSettings.NugetAction == NugetAction.Install || nugetServiceSettings.NugetAction == NugetAction.InstallAndRestore)
                    {
                        await NugetInstallAsync(projectViewModel, settings, cancellationToken);
                    }
                    if (nugetServiceSettings.NugetAction == NugetAction.Reinstall)
                    {
                        await NugetReinstallAsync(projectViewModel, settings, cancellationToken);
                    }
                    await externalActionService.RunExternalPostActions(projectViewModel, this, true, cancellationToken : cancellationToken);

                    statusService.IncrementStep();
                }
            }
        }
        private string GetBatchScript(ISolutionProjectModel model, IServiceSettings settings)
        {
            NugetServiceSettings nugetServiceSettings = settings.GetSettingsFromProvider <NugetServiceSettings>(model);

            return(new StringBuilder()
                   .AppendLineWhen($"\"{NugetExe(model, settings)}\" restore \"{model.ItemPath}\"", s => nugetServiceSettings.NugetAction == NugetAction.Restore || nugetServiceSettings.NugetAction == NugetAction.InstallAndRestore)
                   .AppendLinesWhen(Directory.EnumerateFiles(model.SolutionFolder, "packages.config", SearchOption.AllDirectories)
                                    .Select(s => new FileInfo(s))
                                    .Select(file => $"\"{NugetExe(model, settings)}\" install \"{file.FullName}\" -OutputDirectory \"{file.Directory.Parent.FullName}\\packages\""), s => nugetServiceSettings.NugetAction == NugetAction.Install || nugetServiceSettings.NugetAction == NugetAction.InstallAndRestore).ToString());
        }