public static void CopyDirectoryRecursively( string source, string target, DirectoryExistsPolicy directoryPolicy = DirectoryExistsPolicy.Fail, FileExistsPolicy filePolicy = FileExistsPolicy.Fail, Func <DirectoryInfo, bool> excludeDirectory = null, Func <FileInfo, bool> excludeFile = null) { ControlFlow.Assert(Directory.Exists(source), $"Directory.Exists({source})"); ControlFlow.Assert(!PathConstruction.IsDescendantPath(source, target), $"Target directory '{target}' must not be in source directory '{source}'."); //ControlFlow.Assert(!Contains(source, target), $"Target '{target}' is not contained in source '{source}'."); Logger.Info($"Recursively copying from '{source}' to '{target}'..."); CopyRecursivelyInternal(source, target, directoryPolicy, filePolicy, excludeDirectory, excludeFile); }
public static void DeleteDirectory(string directory) { if (!Directory.Exists(directory)) { return; } if (PathConstruction.IsDescendantPath(EnvironmentInfo.BuildProjectDirectory, directory)) { Logger.Warn($"Skipping directory '{directory}' because it is contained in the build project directory..."); return; } Logger.Info($"Deleting directory '{directory}'..."); DeleteDirectoryInternal(directory); }