public static void AddDirectoryFilesRecursive(this ICSharpCode.SharpZipLib.Zip.ZipFile _ZipFile, string _Root, string _Directory) { string relative = _Directory.Substring(_Root.Length); if (relative.Length > 0) { _ZipFile.AddDirectory(relative); } foreach (string file in System.IO.Directory.GetFiles(_Directory)) { relative = file.Substring(_Root.Length); _ZipFile.Add(file, relative); } foreach (string subFolder in System.IO.Directory.GetDirectories(_Directory)) { _ZipFile.AddDirectoryFilesRecursive(_Root, subFolder); } }