public static void CopyFilesRecursively(DirectoryInfo source, DirectoryInfo target)
{
if (!Directory.Exists(target.FullName)) { Directory.CreateDirectory(target.FullName); }
foreach (DirectoryInfo dir in source.GetDirectories())
CopyFilesRecursively(dir, target.CreateSubdirectory(dir.Name));
foreach (FileInfo file in source.GetFiles())
File.Copy(file.FullName, Path.Combine(target.FullName, file.Name), true);
//file.CopyTo(Path.Combine(target.FullName, file.Name), true);
}