File.Replace in Unix genera eccezioni in modo che corrispondano all'implementazione di Windows
Il comportamento di File.Replace nei sistemi operativi basati su Unix è cambiato. Le eccezioni generate ora corrispondono a quelle generate dall'implementazione di Windows.
Comportamento precedente
In Unix, con .NET 5, il metodo File.Replace:
- Genera IOException con il messaggio
Is a directory
quandosourceFileName
è un file edestinationFileName
è una directory. - Genera IOException con il messaggio
Not a directory
quandosourceFileName
è una directory edestinationFileName
è un file. - L'operazione riesce automaticamente quando
sourceFileName
edestinationFileName
puntano allo stesso file o directory.
Nuovo comportamento
In Unix, con .NET 6, il metodo File.Replace:
- Genera UnauthorizedAccessException con il messaggio
The specified path <path> is not a path
, quandosourceFileName
odestinationFileName
esiste e non è un file oppure quando siasourceFileName
chedestinationFileName
puntano alla stessa directory esistente. - Genera IOException con il messaggio
The source <sourceFileName> and destination <destinationFileName> are the same file
quandosourceFileName
edestinationFileName
puntano allo stesso file esistente.
Versione introdotta
.NET 6
Tipo di modifica che causa un'interruzione
Questa modifica può influire sulla compatibilità dell'origine.
Motivo della modifica
Questa modifica è stata apportata per garantire che File.Replace generi le stesse eccezioni per gli stessi motivi tra le piattaforme.
Azione consigliata
Se si richiama File.Replace su Unix all'interno di un blocco try catch
, assicurarsi di intercettare anche UnauthorizedAccessException. Tenere inoltre presente i nuovi comportamenti rilevati.