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.
Começando com aplicativos direcionados ao .NET Framework 4.6.1, o separador de caminho usado na propriedade ZipArchiveEntry.FullName foi alterado da barra invertida ("\") usada nas versões anteriores do .NET Framework para uma barra ("/"). Os objetos System.IO.Compression.ZipArchiveEntry são criados chamando uma das sobrecargas do método ZipFile.CreateFromDirectory.
Impacto
A alteração traz a implementação do .NET em conformidade com a seção 4.4.17.1 da Especificação de formato de arquivo .ZIP e permite que arquivamentos .ZIP sejam descompactados em sistemas não Windows.
A descompactação de um arquivo zip criado por um aplicativo direcionado a uma versão anterior do .NET Framework em sistemas operacionais não Windows, como o MacOS, não preserva a estrutura de diretório. Por exemplo, no MacOS, ele cria um conjunto de arquivos cujo nome de arquivo concatena o caminho do diretório, quaisquer caracteres de barra invertida ("\") e o nome do arquivo. Consequentemente, a estrutura do diretório de arquivos descompactados não é preservada.
O impacto dessa alteração em arquivos .ZIP que são descompactados no sistema operacional Windows por APIs no namespace do .NET Framework System.IO deve ser mínimo, pois essas APIs podem lidar perfeitamente com uma barra ("/") ou uma barra invertida ("\") como o caractere separador de caminho.
Atenuação
Se esse comportamento for indesejável, você pode optar por desativá-lo adicionando uma configuração à seção <runtime> do arquivo de configuração do aplicativo. O exemplo a seguir mostra tanto a <runtime> seção quanto o interruptor de desativação.
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=true" />
</runtime>
Além disso, os aplicativos destinados a versões anteriores do .NET Framework, mas que estão em execução no .NET Framework 4.6.1 e versões posteriores, podem aceitar esse comportamento adicionando uma configuração à <seção de runtime> do arquivo de configuração do aplicativo. Veja a seguir a seção <runtime> e a opção de aceitação.
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=false" />
</runtime>