Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Spesifikasi file ZIP mendefinisikan bahwa bit 1 & 2 dari bendera bit tujuan umum dalam header direktori pusat rekaman file berlapis harus digunakan untuk menunjukkan tingkat kompresi file berlapis.
.NET Framework mengatur bit ini saat menghasilkan file ZIP yang mendasar ZipPackage API. Selama migrasi kode .NET Framework ke .NET, fungsionalitas ini hilang dan di .NET, bit 1 & 2 selalu diatur ke 0 ketika rekaman file baru dibuat dalam file ZIP. Perubahan yang melanggar ini memulihkan kemampuan tersebut. Namun, klien .NET yang ada yang menentukan CompressionOption saat memanggil ZipArchive.CreateEntry akan melihat nilai bendera bit tujuan umum berubah.
Perilaku sebelumnya
Sebelumnya, .NET mempertahankan bit tujuan umum untuk setiap ZipArchiveEntry bit yang sudah ada saat dimuat ZipArchive dan entri baru ditambahkan. Namun, panggilan ZipArchive.CreateEntry(String, CompressionLevel) selalu mengakibatkan bit 1 & 2 dibiarkan pada nilai 0default , bahkan jika CompressionLevel selain CompressionLevel.Optimal digunakan.
Perilaku ini memiliki efek hilir: memanggil Package.CreatePart(Uri, String, CompressionOption) dengan apa pun CompressionOption yang mengakibatkan bit 1 & 2 dibiarkan tidak diatur (dan dengan demikian CompressionOption selalu dipertahankan ke file ZIP sebagai CompressionOption.Normal).
Perilaku yang baru
Mulai dari .NET 9, parameter dipetakan CompressionLevel ke bendera bit tujuan umum seperti yang ditunjukkan dalam tabel berikut.
CompressionLevel |
Bit 1 | Bit 2 |
|---|---|---|
NoCompression |
0 | 0 |
Optimal |
0 | 0 |
SmallestSize |
1 | 0 |
Fastest |
1 | 1 |
Jika Anda memanggil ZipArchive.CreateEntry(String, CompressionLevel) dan menentukan CompressionLevel.NoCompression, metode kompresi rekaman file berlapis diatur ke Stored (bukan nilai Deflatedefault .)
Bit tujuan umum untuk ZipArchiveEntry rekaman yang sudah ada di ZipArchive masih dipertahankan jika baru ZipArchiveEntry ditambahkan.
Nilai CompressionOption enumerasi di dipetakan Package.CreatePart(Uri, String, CompressionOption) ke CompressionLevel (dan menghasilkan bit terkait yang diatur) seperti yang ditunjukkan dalam tabel berikut.
CompressionOption |
CompressionLevel |
|---|---|
NotCompressed |
NoCompression |
Normal |
Optimal |
Maximum |
SmallestSize (.NET Framework)Optimal (.NET) |
Fast |
Fastest |
SuperFast |
Fastest |
Versi yang diperkenalkan
Pratinjau .NET 9 5
Jenis perubahan yang melanggar
Perubahan ini adalah perubahan perilaku.
Alasan untuk berubah
Perubahan yang melanggar ini diperkenalkan untuk memulihkan perilaku .NET Framework yang ada, yang dihilangkan dari .NET pada titik porting. Perubahan ini juga memberikan klien hilir (seperti System.IO.Packaging) kontrol atas nilai bit ini.
Tindakan yang direkomendasikan
Jika Anda ingin memastikan bahwa rekaman baru ZipArchiveEntry yang ditambahkan ke ZipArchive memiliki bendera bit tujuan umum , 0tentukan CompressionLevel dari CompressionLevel.Optimal atau CompressionLevel.NoCompression saat Anda memanggil ZipArchive.CreateEntry(String, CompressionLevel).
Jika Anda menggunakan Package.CreatePart(Uri, String, CompressionOption) untuk menambahkan bagian ke paket OPC, tentukan CompressionOption dari CompressionOption.NotCompressed atau CompressionOption.Normal.