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);
            }
        }