private void CopyFile(string sourceFilePath, string targetFilePath, string sourceSolutionName, string targetSolutionName) { string extension = Path.GetExtension(sourceFilePath); string targetDirectory = Path.GetDirectoryName(targetFilePath); if (Extensions.SingleOrDefault(i => i.Equals(extension, StringComparison.CurrentCultureIgnoreCase)) == null) { Extensions.Add(extension); } if (targetDirectory != null && Directory.Exists(targetDirectory) == false) { Directory.CreateDirectory(targetDirectory); } if (ReplaceExtensions.SingleOrDefault(i => i.Equals(extension, StringComparison.CurrentCultureIgnoreCase)) != null) { var targetLines = new List <string>(); var sourceLines = File.ReadAllLines(sourceFilePath, Encoding.Default); var regex = new Regex(sourceSolutionName, RegexOptions.IgnoreCase); if (sourceFilePath.EndsWith("BlazorApp.csproj")) { for (int i = 0; i < sourceLines.Length; i++) { var sourceLine = sourceLines[i]; if (sourceLine.TrimStart().StartsWith("<UserSecretsId>")) { sourceLine = $" <UserSecretsId>{Guid.NewGuid()}</UserSecretsId>"; sourceLines[i] = sourceLine; } } } if (sourceLines.Any() && sourceLines.First().Contains(QnSIgnoreLabel) == false) { foreach (var sourceLine in sourceLines) { var targetLine = regex.Replace(sourceLine, targetSolutionName); targetLine = targetLine.Replace(QnSBaseCodeLabel, QnSCodeCopyLabel); targetLines.Add(targetLine); } File.WriteAllLines(targetFilePath, targetLines.ToArray(), Encoding.Default); } } else if (File.Exists(targetFilePath) == false) { File.Copy(sourceFilePath, targetFilePath); } }
private void CopyDirectoryWorkFiles(string sourceDirectory, string targetDirectory, string sourceFolderName, string targetFolderName) { string projectFilePath = string.Empty; foreach (var sourceFile in new DirectoryInfo(sourceDirectory).GetFiles("*") .Where(f => ReplaceExtensions.Any(i => i.Equals(Path.GetExtension(f.Name))))) { string targetFilePath = CreateTargetFilePath(sourceFile.FullName, sourceDirectory, targetDirectory, sourceFolderName, targetFolderName); CopyFile(sourceFile.FullName, targetFilePath, sourceFolderName, targetFolderName); } }