Entschärfung: Pfadtrennzeichen für ZipArchiveEntry.FullNameMitigation: ZipArchiveEntry.FullName Path Separator

Von Apps für die Zielplattform .NET Framework 4.6.1.NET Framework 4.6.1 an wurde das in der Eigenschaft ZipArchiveEntry.FullName verwendete Pfadtrennzeichen vom umgekehrten Schrägstrich („\“), der in früheren Versionen von .NET Framework verwendet wurde, in einen einfachen Schrägstrich („/“) geändert.Starting with apps that target the .NET Framework 4.6.1.NET Framework 4.6.1, the path separator used in the ZipArchiveEntry.FullName property has changed from the backslash ("\") used in previous versions of the .NET Framework to a forward slash ("/"). System.IO.Compression.ZipArchiveEntry-Objekte werden durch Aufrufen einer der Überladungen der ZipFile.CreateFromDirectory-Methode erstellt.System.IO.Compression.ZipArchiveEntry objects are created by calling one of the overloads of the ZipFile.CreateFromDirectory method.

AuswirkungenImpact

Die Änderung bringt die .NET-Implementierung in Einklang mit Abschnitt 4.4.17.1 der ZIP-Dateiformatspezifikation und ermöglicht es, dass ZIP-Archive auf Nicht-Windows-Systemen entpackt werden.The change brings the .NET implementation into conformity with section 4.4.17.1 of the .ZIP File Format Specification and allows .ZIP archives to be decompressed on non-Windows systems.

Beim Dekomprimieren einer ZIP-Datei, die für eine frühere Version der .NET Framework-Zielplattform unter einem anderen als dem Windows-Betriebssystem – wie etwa dem Macintosh – erstellt wurde, bleibt die Verzeichnisstruktur nicht erhalten.Decompressing a zip file created by an app that targets a previous version of the .NET Framework on non-Windows operating systems such as the Macintosh fails to preserve the directory structure. Beispielsweise wird auf dem Macintosh ein Satz Dateien erstellt, deren Dateinamen eine Verkettung aus dem Verzeichnispfad mit allen ggf. vorhandenen umgekehrten Schrägstrichzeichen („\“) darstellen.For example, on the Macintosh, it creates a set of files whose filename concatenates the directory path, along with any backslash ("\") characters, and the filename. Im Ergebnis wird die Verzeichnisstruktur der dekomprimierten Dateien nicht beibehalten.As a result, the directory structure of decompressed files is not preserved.

Die Auswirkungen dieser Änderungen auf ZIP-Dateien, die unter dem Windows-Betriebssystem durch die APIs im .NET Framework System.IO-Namespace dekomprimiert werden, sollten minimal sein, da diese APIs sowohl den einfachen Schrägstrich („/“) als auch den umgekehrten Schrägstrich („\“) als Pfadtrennzeichen verarbeiten können.The impact of this change on .ZIP files that are decompressed on the Windows operating system by APIs in the .NET Framework System.IO namespace should be minimal, since these APIs can seamlessly handle either a slash ("/") or a backslash ("\") as the path separator character.

ProblemumgehungMitigation

Wenn dieses Verhalten nicht erwünscht ist, können Sie sich dagegen entscheiden, indem Sie dem Abschnitt <runtime> Ihrer Anwendungskonfigurationsdatei eine Konfigurationseinstellung hinzufügen.If this behavior is undesirable, you can opt out of by adding a configuration setting to the <runtime> section of your application configuration file. Im Folgenden sind sowohl der Abschnitt <runtime> als auch der Schalter zur Ablehnung dargestellt.The following shows both the <runtime> section and the opt-out switch.

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

Darüber hinaus können Apps mit früheren Versionen von .NET Framework als Zielplattform, die unter .NET Framework 4.6.1.NET Framework 4.6.1 und höheren Versionen ausgeführt werden, sich für die Verwendung dieses Verhaltens entscheiden, indem sie dem Abschnitt <runtime> der Anwendungskonfigurationsdatei eine Konfigurationseinstellung hinzufügen.In addition, apps that target previous versions of the .NET Framework but are running on the .NET Framework 4.6.1.NET Framework 4.6.1 and later versions can opt in to this behavior by adding a configuration setting to the <runtime> section of the application configuration file. Im Folgenden sind sowohl der Abschnitt <runtime> als auch der Schalter zur Annahme dargestellt.The following shows both the <runtime> section and the opt-in switch.

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

Siehe auchSee Also

NeuausrichtungsänderungenRetargeting Changes
Anwendungskompatibilität in 4.6.1Application Compatibility in 4.6.1