Frage

Ich bin mit der SharpSvn Bibliothek in einer Anwendung. Im Rahmen meiner automatisierten Integrationstests, erstelle ich eine Test-Repository, checken Sie eine Arbeitskopie, einige Tests durchführen und sowohl das Repository dann löschen und Arbeitskopie Ordner.

Allerdings ist eine einfache Directory.Delete(workingCopyPath, true); ergibt immer eine UnauthorizedAccessException mit der Meldung „ Zugriff auf den Pfad‚Einträge‘verweigert. “. Ich kann den Fehler mit diesem Code reproduzieren:

     using (var svnClient = new SvnClient())
     {
        svnClient.CheckOut(
           new SvnUriTarget(new Uri(repositoryPath)), workingCopyPath);
     }
     Directory.Delete(workingCopyPath, true);

Dieser Fehler tritt immer noch, wenn ich

  • versuchen, eine Arbeitskopie löschen erstellt durch ein zurück der Integration laufen Tests
  • Thread.Sleep einige Sekunden vor versuchen, löschen

Wenn ich Explorer verwenden, um manuell die temporäre Arbeitskopie zu löschen, ich bekomme keine Fehler.

Was ist hier falsch geht? Was ist der richtige Weg, um programmatisch eine Subversion-Arbeitskopie löschen?

War es hilfreich?

Lösung

Turns out Directory.Delete verweigert schreibgeschützte Dateien löschen.

ich jetzt diese Methode zu löschen Verzeichnisse verwenden:

private void DeleteDirectory(string path)
{
   var directory = new DirectoryInfo(path);
   DisableReadOnly(directory);
   directory.Delete(true);
}

private void DisableReadOnly(DirectoryInfo directory)
{
   foreach (var file in directory.GetFiles())
   {
      if (file.IsReadOnly)
         file.IsReadOnly = false;
   }
   foreach (var subdirectory in directory.GetDirectories())
   {
      DisableReadOnly(subdirectory);
   }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top