Sdílet prostřednictvím


Zmírnění: Oddělovač cesty ZipArchiveEntry.FullName

Počínaje aplikacemi, které cílí na rozhraní .NET Framework 4.6.1, se oddělovač cesty použitý ve ZipArchiveEntry.FullName vlastnosti změnil z zpětného lomítka ("\") použitého v předchozích verzích rozhraní .NET Framework na lomítko ("/"). System.IO.Compression.ZipArchiveEntry objekty jsou vytvořeny voláním jednoho z přetížení ZipFile.CreateFromDirectory metody.

Dopad

Tato změna přináší implementaci rozhraní .NET do souladu s oddílem 4.4.17.1 specifikace formátu souboru .ZIP a umožňuje dekompresi archivů .ZIP v systémech mimo Windows.

Dekomprese souboru ZIP vytvořeného aplikací, která cílí na předchozí verzi rozhraní .NET Framework v operačních systémech jiných než Windows, jako je MacOS, nedokáže zachovat adresářovou strukturu. Například v systému MacOS vytvoří sadu souborů, jejichž název souboru zřetězí cestu k adresáři, všechny znaky zpětného lomítka ("\") a název souboru. V důsledku toho není zachována adresářová struktura dekomprimovaných souborů.

Dopad této změny na .ZIP soubory, které jsou dekomprimované v operačním systému Windows rozhraními API v oboru názvů rozhraní .NET Framework System.IO , by měly být minimální, protože tato rozhraní API mohou bez problémů zpracovat lomítko ("/") nebo zpětné lomítko ("\") jako znak oddělovače cesty.

Zmírnění

Pokud je toto chování nežádoucí, můžete se odhlásit přidáním konfiguračního nastavení do <části runtime> konfiguračního souboru vaší aplikace. V následující části se zobrazuje jak oddíl, <runtime> tak přepínač pro odhlášení.

<runtime>  
   <AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=true" />  
</runtime>  

Aplikace, které cílí na předchozí verze rozhraní .NET Framework, ale běží na rozhraní .NET Framework 4.6.1 a novějších verzích, se můžou k tomuto chování přihlásit přidáním konfiguračního nastavení do <části modulu runtime> konfiguračního souboru aplikace. Na následujícím obrázku je <runtime> uveden oddíl i přepínač pro výslovný souhlas.

<runtime>  
   <AppContextSwitchOverrides value="Switch.System.IO.Compression.ZipFile.UseBackslash=false" />  
</runtime>  

Viz také