Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ZIP-filspecifikationen definierar att bitar 1 & 2 av flaggan generell användning i en kapslad filposts centrala katalogrubrik ska användas för att ange komprimeringsnivån för den kapslade filen.
.NET Framework anger dessa bitar när zip-filerna som ligger till grund för API:et genereras ZipPackage . Under migreringen av .NET Framework-kod till .NET förlorades den här funktionen och i .NET angavs bit 1 och 2 alltid till 0 när nya filposter skapades i ZIP-filen. Den här icke-bakåtkompatibla ändringen återställer den funktionen. Men befintliga .NET-klienter som anger en CompressionOption när anrop ZipArchive.CreateEntry kommer att se de allmänna bitflaggavärdena ändras.
Tidigare beteende
Tidigare bevarade .NET de allmänna bitarna för varje ZipArchiveEntry redan i en ZipArchive när den lästes in och nya poster lades till. Anropet ZipArchive.CreateEntry(String, CompressionLevel) resulterade dock alltid i att bitar 1 och 2 lämnades med standardvärdet 0, även om ett CompressionLevel annat än CompressionLevel.Optimal användes.
Det här beteendet hade en nedströmseffekt: anrop Package.CreatePart(Uri, String, CompressionOption) med någon CompressionOption resulterade i att bitar 1 och 2 lämnades oet (och därför CompressionOption var alltid sparas till ZIP-filen som CompressionOption.Normal).
Nytt beteende
Från och med .NET 9 mappas parametern CompressionLevel till de allmänna bitflaggor som anges i följande tabell.
CompressionLevel | 
Bit 1 | Bit 2 | 
|---|---|---|
NoCompression | 
0 | 0 | 
Optimal | 
0 | 0 | 
SmallestSize | 
1 | 0 | 
Fastest | 
1 | 1 | 
Om du anropar ZipArchive.CreateEntry(String, CompressionLevel) och anger CompressionLevel.NoCompressionanges komprimeringsmetoden för den kapslade filposten till Stored (i stället för standardvärdet Deflate.)
De allmänna bitarna för ZipArchiveEntry poster som redan finns i en ZipArchive bevaras fortfarande om en ny ZipArchiveEntry läggs till.
Uppräkningsvärdena CompressionOption i Package.CreatePart(Uri, String, CompressionOption) mappas till CompressionLevel (och resulterar i motsvarande bitar som anges) enligt följande tabell.
CompressionOption | 
CompressionLevel | 
|---|---|
NotCompressed | 
NoCompression | 
Normal | 
Optimal | 
Maximum | 
              SmallestSize (.NET Framework)Optimal (.NET) | 
Fast | 
Fastest | 
SuperFast | 
Fastest | 
Version introducerad
Förhandsversion 5 av .NET 9
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Den här icke-bakåtkompatibla ändringen introducerades för att återställa det befintliga .NET Framework-beteendet, som utelämnades från .NET vid tidpunkten för porteringen. Den här ändringen ger också underordnade klienter (till exempel System.IO.Packaging) kontroll över värdet för dessa bitar.
Rekommenderad åtgärd
Om du vill se till att nya ZipArchiveEntry poster som har lagts till ZipArchive har allmänna bitflaggor av 0anger du en CompressionLevel av CompressionLevel.Optimal eller CompressionLevel.NoCompression när du anropar ZipArchive.CreateEntry(String, CompressionLevel).
Om du använder Package.CreatePart(Uri, String, CompressionOption) för att lägga till delar i ett OPC-paket anger du en CompressionOption av CompressionOption.NotCompressed eller CompressionOption.Normal.