public static void DeleteFile(string FilePath)
 {
     ConsoleUtils.RetryLoop(() =>
     {
         File.Delete(FilePath);
     }, "Couldn't access file: '" + FilePath + "'", true);
 }
 public static void CreateZipFromDirectory(string SourceDirectory, string DestinationArchiveFileName, bool IncludeBaseDirectory)
 {
     ConsoleUtils.RetryLoop(() =>
     {
         ZipFile.CreateFromDirectory(SourceDirectory, DestinationArchiveFileName, CompressionLevel.Optimal, IncludeBaseDirectory);
     }, "Couldn't create zip", true);
 }
        public static void DeleteDirectory(string target_dir)
        {
            //if (target_dir.Length < 2 || !target_dir.StartsWith(@"\\"))
            //{
            //    target_dir = @"\\?\" + target_dir;
            //}

            string[] files = { };

            ConsoleUtils.RetryLoop(() =>
            {
                files = Directory.GetFiles(target_dir);
            }, "Couldn't access directory: '" + target_dir + "'", true);

            string[] dirs = Directory.GetDirectories(target_dir);

            foreach (string file in files)
            {
                File.SetAttributes(file, FileAttributes.Normal);
                //Console.WriteLine("Deleting file: " + file);

                ConsoleUtils.RetryLoop(() =>
                {
                    File.Delete(file);
                }, "Couldn't delete file", true);
            }

            foreach (string dir in dirs)
            {
                DeleteDirectory(dir);
            }

            //Console.WriteLine("Deleting directory: " + target_dir);

            ConsoleUtils.RetryLoop(() =>
            {
                Directory.Delete(target_dir, true);
            }, "Couldn't delete directory", true);
        }