private SolutionVariantData CreateSolutionVariant(SolutionVariant solutionVariant, string destinationFolder) { SolutionVariantData solutionVariantData = new SolutionVariantData { ContainerName = solutionVariant.ContainerName, Items = solutionVariant.SolutionTemplateInfo.Items .Select(info => CreateSolutionItemData(info, destinationFolder)) .ToArray() }; return solutionVariantData; }
private void CreateSolution(SolutionVariantData solutionVariantData, SolutionDataViewModel solutionData) { var solution = GetSolution(); var waitViewModel = new WaitViewModel(); var window = WpfServices.CreateWindow<WaitView>(waitViewModel); WpfServices.SetWindowOwner(window, solution.DTE.MainWindow); waitViewModel.Completed += async (s, a) => { await window.Dispatcher.InvokeAsync(() => { window.DialogResult = !a.Cancelled && a.Error == null; }); }; waitViewModel.Caption = "Creating solution..."; waitViewModel.Run((p, ct) => { int count = solutionVariantData.Items.Length; double k = 1.0/count; for (int i = 0; i < count; ++i) { var pr = k*i; p.Report(pr); int j = i; CreateSolutionItem( null, solutionVariantData.Items[i], progress => { pr = k*j + progress*k; p.Report(pr); }, solutionData, ct); ct.ThrowIfCancellationRequested(); } }); var retVal = window.ShowDialog() ?? false; if (!retVal) { throw new WizardCancelledException(); } }