private void importFromTeamProjectButton_Click(object sender, RoutedEventArgs e) { try { using (var dialog = new TeamProjectPicker(TeamProjectPickerMode.SingleProject, false)) { var result = dialog.ShowDialog(Application.Current.MainWindow.GetIWin32Window()); if (result == System.Windows.Forms.DialogResult.OK && dialog.SelectedProjects != null && dialog.SelectedProjects.Length > 0) { try { this.IsEnabled = false; var teamProjectCollection = dialog.SelectedTeamProjectCollection; var teamProject = dialog.SelectedProjects.First(); var tfs = TfsTeamProjectCollectionCache.GetTfsTeamProjectCollection(teamProjectCollection.Uri); var store = tfs.GetService <WorkItemStore>(); var project = store.Projects[teamProject.Name]; this.Configuration = WorkItemConfiguration.FromTeamProject(tfs, project); } finally { this.IsEnabled = true; } } } } catch (Exception exc) { ShowException(exc); } }
private void Compare(object argument) { var teamProjectNames = this.SelectedTeamProjects.Select(p => p.Name).ToList(); var sources = this.ComparisonSources.ToList(); var ignoreCase = this.IgnoreCase; var task = new ApplicationTask("Comparing work item configurations", teamProjectNames.Count, true); PublishStatus(new StatusEventArgs(task)); var step = 0; var worker = new BackgroundWorker(); worker.DoWork += (sender, e) => { var tfs = GetSelectedTfsTeamProjectCollection(); var store = tfs.GetService <WorkItemStore>(); var results = new List <TeamProjectComparisonResult>(); foreach (var teamProjectName in teamProjectNames) { task.SetProgress(step++, string.Format(CultureInfo.CurrentCulture, "Processing Team Project \"{0}\"", teamProjectName)); try { var project = store.Projects[teamProjectName]; var target = WorkItemConfiguration.FromTeamProject(tfs, project); var sourceComparisonResults = new List <WorkItemConfigurationComparisonResult>(); foreach (var source in sources) { sourceComparisonResults.Add(WorkItemConfigurationComparer.Compare(this.SelectedTeamProjectCollection.TeamFoundationServer.MajorVersion, source, target, ignoreCase)); } results.Add(new TeamProjectComparisonResult(teamProjectName, sourceComparisonResults)); } catch (Exception exc) { task.SetWarning(string.Format(CultureInfo.CurrentCulture, "An error occurred while processing Team Project \"{0}\"", teamProjectName), exc); } if (task.IsCanceled) { task.Status = "Canceled"; break; } } e.Result = results; }; worker.RunWorkerCompleted += (sender, e) => { if (e.Error != null) { Logger.Log("An unexpected exception occurred while comparing work item configurations", e.Error); task.SetError(e.Error); task.SetComplete("An unexpected exception occurred"); } else { this.ComparisonResults = (ICollection <TeamProjectComparisonResult>)e.Result; task.SetComplete("Done"); } }; worker.RunWorkerAsync(); }