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, wennsourceFileName
eine Datei unddestinationFileName
ein Verzeichnis ist. - Sie löst eine IOException mit der Meldung
Not a directory
aus, wennsourceFileName
ein Verzeichnis unddestinationFileName
eine Datei ist. - Sie ist ohne Benutzereingriff erfolgreich, wenn sowohl
sourceFileName
als auchdestinationFileName
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, wennsourceFileName
oderdestinationFileName
vorhanden und keine Datei ist oder wenn sowohlsourceFileName
als auchdestinationFileName
auf dasselbe vorhandene Verzeichnis verweisen. - Sie löst eine IOException mit der Meldung
The source <sourceFileName> and destination <destinationFileName> are the same file
aus, wennsourceFileName
unddestinationFileName
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.
Empfohlene Maßnahme
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.