private bool UpdateLockFile(PublishRoot root) { var appEnv = (IApplicationEnvironment)root.HostServices.GetService(typeof(IApplicationEnvironment)); var feedOptions = new FeedOptions(); feedOptions.IgnoreFailedSources = true; feedOptions.Sources.Add(root.TargetPackagesPath); feedOptions.TargetPackagesFolder = root.TargetPackagesPath; var tasks = new Task<bool>[root.Projects.Count]; for (int i = 0; i < root.Projects.Count; i++) { var project = root.Projects[i]; var restoreCommand = new RestoreCommand(appEnv); foreach (var runtime in root.Runtimes) { restoreCommand.TargetFrameworks.Add(project.SelectFrameworkForRuntime(runtime)); } var restoreDirectory = project.IsPackage ? Path.Combine(project.TargetPath, "root") : project.TargetPath; restoreCommand.SkipRestoreEvents = true; restoreCommand.SkipInstall = true; // This is a workaround for #1322. Since we use restore to generate the lock file // after publish, it's possible to fail restore after copying the closure // if framework assemblies and packages have the same name. This is more likely now // since dependencies may exist in the top level restoreCommand.IgnoreMissingDependencies = true; restoreCommand.CheckHashFile = false; restoreCommand.RestoreDirectories.Add(restoreDirectory); restoreCommand.FeedOptions = feedOptions; restoreCommand.Reports = root.Reports.ShallowCopy(); // Mute "dnu restore" completely if it is invoked by "dnu publish --quiet" restoreCommand.Reports.Information = root.Reports.Quiet; tasks[i] = restoreCommand.Execute(); } Task.WaitAll(tasks); return tasks.All(t => t.Result); }
private bool UpdateLockFile(PublishRoot root) { var tasks = new Task<bool>[root.Projects.Count]; for (int i = 0; i < root.Projects.Count; i++) { var project = root.Projects[i]; var restoreDirectory = project.IsPackage ? Path.Combine(project.TargetPath, "root") : project.TargetPath; tasks[i] = Restore(root, project, restoreDirectory); } Task.WaitAll(tasks); return tasks.All(t => t.Result); }
private void FinalWork(Task[] tasks) { if (tasks.All(t => t.Status == TaskStatus.RanToCompletion)) { Logger.LogToFile("======== Create PNR process ended at :" + DateTime.Now.ToString()); this.progressBar.BeginInvoke((MethodInvoker)delegate() { btnCreate.Enabled = true; btnProcessPNRs.Enabled = true; progressBar.Visible = false; progressBar.Refresh(); lblInfo.Text = "PROCESS COMPLETED"; lblInfo.Refresh(); lblInfo.ForeColor = Color.Green; lblUploadInfo.Text = string.Empty; }); } }