private async Task FinalizeConversionAsync(List <string> files, List <string> errors, string longestFilePath, List <ConversionResult> filesToOverwrite) { var options = await GetOptions(); var pathsToOverwrite = filesToOverwrite.Select(f => PathRelativeToSolutionDir(f.SourcePathOrNull)); var shouldOverwriteSolutionAndProjectFiles = filesToOverwrite.Any() && (options.AlwaysOverwriteFiles || await UserHasConfirmedOverwriteAsync(files, errors, pathsToOverwrite.ToList())); if (shouldOverwriteSolutionAndProjectFiles) { var titleMessage = options.CreateBackups ? "Creating backups and overwriting files:" : "Overwriting files:" + ""; await _outputWindow.WriteToOutputWindowAsync(Environment.NewLine + titleMessage); foreach (var fileToOverwrite in filesToOverwrite) { if (options.CreateBackups) { File.Copy(fileToOverwrite.SourcePathOrNull, fileToOverwrite.SourcePathOrNull + ".bak", true); } fileToOverwrite.WriteToFile(); var targetPathRelativeToSolutionDir = PathRelativeToSolutionDir(fileToOverwrite.TargetPathOrNull); await _outputWindow.WriteToOutputWindowAsync($"* {targetPathRelativeToSolutionDir}"); } files = files.Concat(filesToOverwrite.Select(f => f.SourcePathOrNull)).ToList(); } else if (longestFilePath != null) { await(await VisualStudioInteraction.OpenFileAsync(new FileInfo(longestFilePath))).SelectAllAsync(); } var conversionSummary = await GetConversionSummaryAsync(files, errors); await _outputWindow.WriteToOutputWindowAsync(conversionSummary); await _outputWindow.ForceShowOutputPaneAsync(); }