Freigeben über


File.Replace unter Unix löst Ausnahmen aus, die mit der Windows-Implementierung übereinstimmen

Das Verhalten von File.Replace Unix-basierten Betriebssystemen hat sich geändert. Die ausgelösten Ausnahmen stimmen jetzt mit denen überein, die von der Windows-Implementierung ausgelöst werden.

Vorheriges Verhalten

Unter UNIX mit .NET 5 gilt für die File.Replace-Methode Folgendes:

  • Löst IOException mit der Nachricht Is a directory aus, wenn es sich um sourceFileName eine Datei handelt und destinationFileName ein Verzeichnis ist.
  • Löst IOException mit der Nachricht Not a directory aus, wenn es sich um sourceFileName ein Verzeichnis handelt und destinationFileName eine Datei ist.
  • Sie ist ohne Benutzereingriff erfolgreich, wenn sowohl sourceFileName als auch destinationFileName auf dieselbe Datei oder dasselbe Verzeichnis verweisen.

Neues Verhalten

Auf Unix, mit .NET 6, die File.Replace Methode:

  • Sie löst eine UnauthorizedAccessException mit der Meldung The specified path <path> is not a path aus, wenn sourceFileName oder destinationFileName vorhanden und keine Datei ist oder wenn sowohl sourceFileName als auch destinationFileName auf dasselbe vorhandene Verzeichnis verweisen.
  • IOException wird mit der Nachricht The source <sourceFileName> and destination <destinationFileName> are the same file ausgelöst, wenn sourceFileName und destinationFileName auf dieselbe vorhandene Datei zeigen.

Eingeführte Version

.NET 6

Art der einschneidenden Änderung

Diese Änderung kann sich auf die Quellkompatibilität auswirken.

Grund für Änderung

Diese Änderung wurde vorgenommen, um sicherzustellen, dass durch File.Replace plattformübergreifend dieselben Ausnahmen aus denselben Gründen ausgelöst werden.

Wenn Sie File.Replace auf Unix innerhalb eines try catch-Blocks aufrufen, stellen Sie sicher, dass Sie jetzt auch UnauthorizedAccessException abfangen. Beachten Sie auch die neuen Verhaltensweisen, die erkannt werden.

Betroffene APIs