Funkcja File.Replace w systemie Unix zgłasza wyjątki zgodne z implementacją systemu Windows
Zachowanie File.Replace systemów operacyjnych opartych na systemie Unix uległo zmianie. Wyjątki, które zgłaszają, są teraz zgodne z tymi, które są zgłaszane przez implementację systemu Windows.
Poprzednie zachowanie
W systemie Unix z platformą File.Replace .NET 5 metoda:
- IOException Zgłasza komunikat
Is a directory
, gdysourceFileName
jest plikiem idestinationFileName
jest katalogiem. - IOException Zgłasza komunikat
Not a directory
, gdysourceFileName
jest katalogiem idestinationFileName
jest plikiem. - Dyskretnie kończy się powodzeniem, gdy zarówno plik
sourceFileName
, jak idestinationFileName
wskaże ten sam plik lub katalog.
Nowe zachowanie
W systemie Unix z platformą File.Replace .NET 6 metoda:
- UnauthorizedAccessException Zgłasza komunikat
The specified path <path> is not a path
, jeśli istniejesourceFileName
lubdestinationFileName
nie istnieje, albo nie jest plikiem, albo gdy zarówno,sourceFileName
jak idestinationFileName
wskaże ten sam istniejący katalog. - Zgłasza komunikat
The source <sourceFileName> and destination <destinationFileName> are the same file
, gdysourceFileName
idestinationFileName
wskaże IOException ten sam istniejący plik.
Wprowadzona wersja
.NET 6
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność źródła.
Przyczyna wprowadzenia zmiany
Ta zmiana została wprowadzona w celu zapewnienia, że File.Replace zgłasza te same wyjątki z tych samych powodów na różnych platformach.
Zalecana akcja
Jeśli wywołasz metodę File.Replacetry catch
w systemie Unix wewnątrz bloku, pamiętaj, aby teraz również przechwycić UnauthorizedAccessExceptionelement . Należy również pamiętać o nowych zachowaniach, które są przechwytywane.