예제 #1
0
        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();
                }
            }
        }
예제 #2
0
 public void DeleteDirectory(string directory, DeleteDirectoryOption onDirectoryNotEmpty)
 {
     FileSystem.DeleteDirectory(directory, onDirectoryNotEmpty);
 }
 public void DeleteDirectory(string directory, DeleteDirectoryOption onDirectoryNotEmpty)
 {
     FileSystem.DeleteDirectory(directory, onDirectoryNotEmpty);
 }
예제 #4
0
 public static void MyDeleteFolder(Task buildTask, string folderName, DeleteDirectoryOption OnDirectoryNotEmpty, bool failOnError)
 {
     MyDeleteFolder(buildTask, folderName, OnDirectoryNotEmpty, failOnError, "About to delete folder '{0}'");
 }
예제 #5
0
 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();
         }
     }
 }
예제 #6
0
 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));
     }
 }