.NET Framework与Zip文件格式间总是存在着一种不可思议的关系。在一开始,.NET提供了对Zip文件的支持,但其实现方式却是大多数人都没有意识到的。很久之前被抛弃的J#编程语言包含了Java的java.util.zip包。在2003年Ianier Munoz发表的一篇文章中介绍了如何在C#中使用J# Zip库。
.NET 2.0在这个问题上则出现了明显的倒退。那时,J#已经被开发者社区所遗忘,提供给我们的则是几乎毫无用处的IO.Compression命名空间。DeflateStream与GZipStream类只提供了单向、基于流的压缩。此外,他们还缺乏处理与多种文件档案如Zip相关的元数据的能力。
2006年,微软通过ZipPackage类提供了一个异常笨拙的处理Zip文件的API。创建该API的主要目的在于支持Open XML Paper Specification(XPS)。XPS最初被看作是与Adobe PDF文件格式进行直接竞争的一个尝试,但后来这些努力还是被放弃了。如今的XPS主要用于Windows的假脱机打印,用于替换基于GDI的WinPrint(如果打印机支持的话)。
对于.NET 4.5来说,我们终于看到了一个值得期待的用于处理Zip文件的内建API。虽然现在谈论ZipArchive类是否是DotNetZip等库的竞争者还为时尚早,但它至少向那些由于许可问题而无法使用开源库的开发者提供了一些可用的东西。Tugberk Ugurlu研究并介绍了如何使用.NET 4.5中的ZipArchive。