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 quando sourceFileName è un file e destinationFileName è una directory.
  • Genera IOException con il messaggio Not a directory quando sourceFileName è una directory e destinationFileName è un file.
  • L'operazione riesce automaticamente quando sourceFileName e destinationFileName 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, quando sourceFileName o destinationFileName esiste e non è un file oppure quando sia sourceFileName che destinationFileName puntano alla stessa directory esistente.
  • Genera IOException con il messaggio The source <sourceFileName> and destination <destinationFileName> are the same file quando sourceFileName e destinationFileName 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.

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.

API interessate