public async Task RunTask() { Console.WriteLine(Environment.NewLine); Console.WriteLine(this.Name); Console.WriteLine(Environment.NewLine); Console.WriteLine("Input solution path."); Console.WriteLine(Environment.NewLine); string solutionPath = Console.ReadLine(); if (!File.Exists(solutionPath)) { Console.WriteLine("File does not exists!"); return; } using var workspace = await new MSBuildWorkspaceFactory().GetWorkspace(); Solution solution = await workspace.OpenSolutionAsync(solutionPath); Console.WriteLine("Select project:"); Project?project = await TaskExecutable.RunTask(CommonTaskFunctions.GetProjectTask, solution); if (project == null) { return; } List <TagDocumentGroup> documentGroups = new List <TagDocumentGroup>(); await foreach (TagDocumentGroup? documentGroup in TaskExecutable.RunTaskAsyncEnumerable(GetDocumentTask, project)) { if (documentGroup != null) { documentGroups.Add(documentGroup); } } var projectGroup = new TagProjectGroup(documentGroups); await TaskExecutable.RunTask(CommonTaskFunctions.SaveDocumentsTask, projectGroup); workspace.CloseSolution(); }
public async Task RunTask() { Console.WriteLine(Environment.NewLine); Console.WriteLine(this.Name); Console.WriteLine(Environment.NewLine); TagTemplateGroup?template = await TaskExecutable.RunTask(this.LoadTemplate); if (template == null) { return; } Console.WriteLine("Input solution path."); Console.WriteLine(Environment.NewLine); string solutionPath = Console.ReadLine(); if (!File.Exists(solutionPath)) { Console.WriteLine("File does not exists!"); return; } using MSBuildWorkspace workspace = await new MSBuildWorkspaceFactory().GetWorkspace(); Solution solution = await workspace.OpenSolutionAsync(solutionPath); Console.WriteLine(Environment.NewLine); Console.WriteLine("Select project:"); Project?project = await TaskExecutable.RunTask(CommonTaskFunctions.GetProjectTask, solution); if (project == null) { return; } var selectedDocuments = new List <Document>(); await foreach (Document? document in TaskExecutable.RunTaskAsyncEnumerable(CommonTaskFunctions.SelectDocuments, project.Documents.Where(whereDocument => !selectedDocuments.Contains(whereDocument)))) { if (document != null) { selectedDocuments.Add(document); } } TagProjectGroup projectGroup = await CommonTaskFunctions.ImplementsTags(selectedDocuments, template.TagElements); List <Document> documents = new List <Document>(); foreach (DocumentGroup createDocument in template.Documents) { foreach (TagDocumentGroup documentGroup in projectGroup.Documents) { TagDocumentGroup newDocumentGroup = CommonTaskFunctions.ReplaceDocumentTags(documentGroup, createDocument.ReplacedTags); Document? newDocument = CommonTaskFunctions.AppendDocumentToProject(project, newDocumentGroup); if (newDocument != null) { project = newDocument.Project; documents.Add(newDocument); } } } workspace.TryApplyChanges(project.Solution); workspace.CloseSolution(); }