DotNetZip works with the .NET Compact Framework
There is a special version of DotNetZip, specifically built for the
.NET Compact Framework v2.0 or v3.5.
The programming model is exactly the same as for the regular
DotNetZip library. There are a few features not supported in the CF version of DotNetZip:
- Self-extracting
archives. The ZipFile.SaveSelfExtractor() method is not available in
the CF version of DotNetZip. There's no strong technical reason for this
limnitation; I just didn't think it would be of mainstream interest, and
in order to keep the size of the library down, I omitted that part from
the CF version. It amounts to about a 120k savings.
- WinZip AES encryption. The CF version does not
support encryption using WinZipAes128 or WinZipAes256. This is because
the crypto classes from the .NET Framework are not available on .NET CF.
I would have to write my own SHA1HMAC() and so on, which I haven't got
'round to doing, especially because no one is clamoring for it.
- ParallelDeflateStream. Most mobile devices do not
use multicore processors, so a parallel deflater would offer no
benefit. Even aside from that, parallel deflation shows its strength
when cmopressing larger files, and when larger memory resources are
available. Both of these are unlikely in .NET CF applications.
Using DotNetZip in a Smart Device project
To build a smart device application that uses DotNetZip, you will
need to use Visual Studio 2008 or later.
- Open Visual Studio 2008.
- Create a smart device project. Specify that it will use the .NET
Compact Framework v2.0 or v3.5.
- Add a Reference to the CF Library for DotNetZip.
The filename is Ionic.Zip.CF.dll
- Build your application as normal.
About the Project Design
If you are a developer who wants to modify or extend the DotNetZip library itself,
the following may be of interest.
The CF-Library project in the DotNetZip source distribution includes
all of the source files as Links to the original files in the
Library project. This means, the source files are not duplicated. Any
changes need to be made only once. The CF-Library project is simply a
"build project" in that regard. There is no additional source code
specifically for the .NET Compact Framework.
NETCF is defined as a conditional compile symbol for the CF-Library
project. This symbol is used in the source to exclude code that will
not run on the .NET Compact Framework, for example, the calls to
SetLastModifiedTime() method on the System.IO.File class.