private void DeleteDirectory(string target_dir)
{
string[] files = Directory.GetFiles(target_dir);
string[] dirs = Directory.GetDirectories(target_dir);
foreach (string file in files)
{
try
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
catch (PathTooLongException)
{
LongPathFile.Delete(file);
}
}
foreach (string dir in dirs)
{
// Only recurse into "normal" directories
if ((File.GetAttributes(dir) & FileAttributes.ReparsePoint) == FileAttributes.ReparsePoint)
try
{
Directory.Delete(dir, false);
}
catch (PathTooLongException)
{
LongPathDirectory.Delete(dir);
}
else
DeleteDirectory(dir);
}
try
{
Directory.Delete(target_dir, false);
}
catch (PathTooLongException)
{
LongPathDirectory.Delete(target_dir);
}
}