/// <summary> /// Copy a directory recursively to the specified non-existing directory /// </summary> /// <param name="source">Directory to copy from</param> /// <param name="target">Directory to copy to</param> public static void RecursivelyCopyDirectory(string source, string target) { // Make sure it doesn't already exist if (Directory.Exists(target)) throw new ApplicationException(String.Format(CultureInfo.CurrentCulture, SR.GetString(SR.FileOrFolderAlreadyExists, CultureInfo.CurrentUICulture), target)); Directory.CreateDirectory(target); DirectoryInfo directory = new DirectoryInfo(source); // Copy files foreach (FileInfo file in directory.GetFiles()) { file.CopyTo(Path.Combine(target, file.Name)); } // Now recurse to child directories foreach (DirectoryInfo child in directory.GetDirectories()) { RecursivelyCopyDirectory(child.FullName, Path.Combine(target, child.Name)); } }