При использовании DotNetZip столкнулся с непонятным поведением библиотеки если путь источник это весь диск ,например: c:\ или d:\
ZipFile zip = new ZipFile("d:\arhiv.zip", Encoding.UTF8);
zip.RemoveSelectedEntries("*.xls");
zip.AddSelectedFiles("*", "c:\", "Arhive", true);
zip.Save(); В результате будет создан пустой архив. Начал копать, оказывается, в исходниках DotNetZIp в файле ZIpFile.Selector.cs авторы исправили авторский багрепорт под номером 9176 (проблема со слэшем ‘\’ в конце пути)
// workitem 9176
while (directoryOnDisk.EndsWith("\\")) directoryOnDisk = directoryOnDisk.Substring(0, directoryOnDisk.Length - 1); После отработки directoryOnDisk = «C:», и функция выбора файлов возвращает пустой результат. Пришлось немного изменить изменить исходник, добавив:
// workitem 9176
//while (directoryOnDisk.EndsWith("\\")) directoryOnDisk = directoryOnDisk.Substring(0, directoryOnDisk.Length - 1);
if (directoryOnDisk.EndsWith("\\") && (directoryOnDisk.Trim().Length>3)
directoryOnDisk = directoryOnDisk.Substring(0, directoryOnDisk.Length - 1); Теперь все с корневого раздела данные ищутся как надо.