Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O comportamento de File.Replace nos sistemas operacionais baseados em Unix foi alterado. As exceções geradas agora correspondem às que são geradas pela implementação do Windows.
Comportamento anterior
No Unix, com o .NET 5, o método File.Replace:
- Lança IOException com a mensagem
Is a directoryquandosourceFileNameé um arquivo edestinationFileNameé um diretório. - Gera IOException com a mensagem
Not a directoryquandosourceFileNameé um diretório edestinationFileNameé um arquivo. - Completa silenciosamente com êxito quando ambos
sourceFileNameedestinationFileNameapontam para o mesmo arquivo ou diretório.
Novo comportamento
Em Unix, com o .NET 6, o método File.Replace:
- Lança UnauthorizedAccessException com a mensagem
The specified path <path> is not a pathsesourceFileNameoudestinationFileNameexiste e não é um arquivo, ou quando tantosourceFileNamequantodestinationFileNameapontam para o mesmo diretório existente. - Gera IOException com a mensagem
The source <sourceFileName> and destination <destinationFileName> are the same filequandosourceFileNameedestinationFileNameapontam para o mesmo arquivo existente.
Versão introduzida
.NET 6
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade da origem.
Motivo da alteração
Essa alteração foi feita para garantir que File.Replace gere as mesmas exceções pelos mesmos motivos entre plataformas.
Ação recomendada
Se você invocar File.Replace em Unix dentro de um bloco try catch, agora não se esqueça de capturar também UnauthorizedAccessException. Além disso, lembre-se dos novos comportamentos que são capturados.