public static void MyDeleteFolder(Task buildTask, string folderName, DeleteDirectoryOption OnDirectoryNotEmpty, bool failOnError, string logText) { var myComputer = new Computer(); if (Directory.Exists(folderName)) { if (Strings.Len(logText) > 0) { MyLogMessage(buildTask, string.Format(logText, folderName), MessageImportance.Normal); } try { myComputer.FileSystem.DeleteDirectory(folderName, OnDirectoryNotEmpty); } catch (UnauthorizedAccessException exception1) { ProjectData.SetProjectError(exception1); UnauthorizedAccessException exception = exception1; if (OnDirectoryNotEmpty == DeleteDirectoryOption.DeleteAllContents) { foreach (string str in Directory.GetFiles(folderName, "*.*", System.IO.SearchOption.AllDirectories)) { MyDeleteFile(str, true); } MyDeleteFolder(buildTask, folderName, DeleteDirectoryOption.ThrowIfDirectoryNonEmpty, failOnError, logText); } ProjectData.ClearProjectError(); } catch (IOException exception4) { ProjectData.SetProjectError(exception4); IOException exception2 = exception4; if ((Strings.InStr(exception2.Message, "is not empty", CompareMethod.Binary) > 0) && (OnDirectoryNotEmpty == DeleteDirectoryOption.DeleteAllContents)) { foreach (string str2 in Directory.GetDirectories(folderName, "*", System.IO.SearchOption.TopDirectoryOnly)) { MyDeleteFolder(buildTask, str2, DeleteDirectoryOption.ThrowIfDirectoryNonEmpty, failOnError, logText); } } else { if (failOnError) { throw; } MyLogWarning(buildTask, string.Format("Deleting folder '{0}' failed with exception '{1}'. The exception type was '{2}'. This may result in a later build error.", folderName, exception2.Message, exception2.GetType().Name)); } ProjectData.ClearProjectError(); } catch (Exception exception5) { ProjectData.SetProjectError(exception5); Exception exception3 = exception5; if (failOnError) { throw; } MyLogWarning(buildTask, string.Format("Deleting folder '{0}' failed with exception '{1}'. The exception type was '{2}'. This may result in a later build error.", folderName, exception3.Message, exception3.GetType().Name)); ProjectData.ClearProjectError(); } } }
public void DeleteDirectory(string directory, DeleteDirectoryOption onDirectoryNotEmpty) { FileSystem.DeleteDirectory(directory, onDirectoryNotEmpty); }
public static void MyDeleteFolder(Task buildTask, string folderName, DeleteDirectoryOption OnDirectoryNotEmpty, bool failOnError) { MyDeleteFolder(buildTask, folderName, OnDirectoryNotEmpty, failOnError, "About to delete folder '{0}'"); }
private static void DeleteDirectoryInternal(string directory, DeleteDirectoryOption onDirectoryNotEmpty, UIOptionInternal showUI, RecycleOption recycle, UICancelOption onUserCancel) { VerifyDeleteDirectoryOption("onDirectoryNotEmpty", onDirectoryNotEmpty); VerifyRecycleOption("recycle", recycle); VerifyUICancelOption("onUserCancel", onUserCancel); string fullPath = Path.GetFullPath(directory); DemandDirectoryPermission(fullPath, FileIOPermissionAccess.Write); ThrowIfDevicePath(fullPath); if (!Directory.Exists(fullPath)) { throw ExceptionUtils.GetDirectoryNotFoundException("IO_DirectoryNotFound_Path", new string[] { directory }); } if (IsRoot(fullPath)) { throw ExceptionUtils.GetIOException("IO_DirectoryIsRoot_Path", new string[] { directory }); } if ((showUI != UIOptionInternal.NoUI) && Environment.UserInteractive) { ShellDelete(fullPath, showUI, recycle, onUserCancel, FileOrDirectory.Directory); } else { Directory.Delete(fullPath, onDirectoryNotEmpty == DeleteDirectoryOption.DeleteAllContents); } }
public static void DeleteDirectory(string directory, DeleteDirectoryOption onDirectoryNotEmpty) { DeleteDirectoryInternal(directory, onDirectoryNotEmpty, UIOptionInternal.NoUI, RecycleOption.DeletePermanently, UICancelOption.ThrowException); }
private static void VerifyDeleteDirectoryOption(string argName, DeleteDirectoryOption argValue) { if ((argValue != DeleteDirectoryOption.DeleteAllContents) && (argValue != DeleteDirectoryOption.ThrowIfDirectoryNonEmpty)) { throw new InvalidEnumArgumentException(argName, (int) argValue, typeof(DeleteDirectoryOption)); } }