Inheritance: PropertyNotifyObject
        private async Task Export()
        {
            ProjectCollectionInfo projectCollection = Tools.CurrentProjectCollection;

            TeamProjectInfo[] teamProjects;

            if (IsAllTeamProjects)
            {
                teamProjects = projectCollection.TeamProjectInfos;

                foreach (TeamProjectInfo teamProject in teamProjects)
                {
                    if (teamProject.WorkItemTypeInfos == null)
                    {
                        await Tools.GetAllTeamProjectsWITypes();
                        break;
                    }
                }
            }
            else
                teamProjects = new TeamProjectInfo[] { Tools.CurrentTeamProject };

            foreach (TeamProjectInfo teamProject in teamProjects)
            {
                WorkItemTypeInfo[] workItemTypeInfos;
                string path = Path;

                if (IsAllTeamProjects)
                {
                    path = System.IO.Path.Combine(path, teamProject.Name);
                    System.IO.Directory.CreateDirectory(path);
                }

                workItemTypeInfos = (IsAllWorkItemTypes)
                    ? teamProject.WorkItemTypeInfos
                    : workItemTypeInfos = new WorkItemTypeInfo[] { Tools.CurrentWorkItemType };

                Tools.Progress.BeginWorking(workItemTypeInfos.Length);
                try
                {
                    foreach (WorkItemTypeInfo workItemTypeInfo in workItemTypeInfos)
                    {
                        try
                        {
                            await Export(projectCollection, teamProject, workItemTypeInfo, path);
                            Tools.Progress.NextStep();
                        }
                        catch (WitAdminException)
                        {
                            Tools.Progress.FailStep();
                        }
                    }
                }
                finally
                {
                    Tools.Progress.EndWorking();
                }
            }
        }
        private async Task Export(ProjectCollectionInfo projectCollection, TeamProjectInfo teamProject, WorkItemTypeInfo workItemType, string path)
        {
            string projectCollectionName = projectCollection.Name;
            string teamProjectName = teamProject.Name;
            string workItemTypeName = workItemType.Name;

            string fileName = string.Format("{0}.xml", workItemTypeName);
            string fullPath = System.IO.Path.Combine(path, fileName);

            await Tools.WitAdminService.ExportWorkItemDefenition(TFManager, projectCollectionName, teamProjectName,
                workItemTypeName, fullPath);
        }