File.Replace sur Unix lève des exceptions pour correspondre à l’implémentation Windows

Le comportement de File.Replace sur les systèmes d’exploitation Unix a changé. Les exceptions qu’il lève correspondent désormais à celles levées par l’implémentation Windows.

Comportement précédent

Sur Unix, avec .NET 5, la méthode File.Replace :

  • Lève IOException avec le message Is a directory quand sourceFileName est un fichier et destinationFileName est un répertoire.
  • Lève IOException avec le message Not a directory quand sourceFileName est un répertoire et destinationFileName est un fichier.
  • Réussit en mode silencieux lorsque sourceFileName et destinationFileName pointent vers le même fichier ou répertoire.

Nouveau comportement

Sur Unix, avec .NET 6, la méthode File.Replace :

  • Lève UnauthorizedAccessException avec le message The specified path <path> is not a path, quand sourceFileName ou destinationFileName existe et n’est pas un fichier ou lorsque sourceFileName et destinationFileName pointent vers le même répertoire existant.
  • Lève IOException avec le message The source <sourceFileName> and destination <destinationFileName> are the same file quand sourceFileName et destinationFileName pointent vers le même fichier existant.

Version introduite

.NET 6

Type de changement cassant

Ce changement peut affecter la compatibilité source.

Raison du changement

Ce changement a été apporté pour s’assurer que File.Replace lève les mêmes exceptions pour les mêmes raisons sur les plateformes.

Si vous appelez File.Replace sur Unix à l’intérieur d’un bloc try catch, veillez à intercepter UnauthorizedAccessException également. En outre, tenez compte des nouveaux comportements qui sont interceptés.

API affectées