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>