File.Replace unter UNIX löst Ausnahmen aus, um eine Übereinstimmung mit der Windows-Implementierung zu erreichen

Das Verhalten von File.Replace auf 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:

  • Sie löst eine IOException mit der Meldung Is a directory aus, wenn sourceFileName eine Datei und destinationFileName ein Verzeichnis ist.
  • Sie löst eine IOException mit der Meldung Not a directory aus, wenn sourceFileName ein Verzeichnis 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

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

  • 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.
  • Sie löst eine IOException mit der Meldung The source <sourceFileName> and destination <destinationFileName> are the same file aus, wenn sourceFileName und destinationFileName auf dieselbe vorhandene Datei zeigen.

Eingeführt in Version

.NET 6

Typ des Breaking Changes

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

Grund für die Ä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 unter UNIX innerhalb eines try catch-Blocks aufrufen, stellen Sie sicher, dass jetzt auch UnauthorizedAccessException abgefangen wird. Beachten Sie außerdem die neuen Verhaltensweisen, die erfasst werden.

Betroffene APIs