Нет "хорошего" способа сделать это. Очевидно, вы могли бы реализовать алгоритм ZIP самостоятельно, используя общедоступную информацию о структуре файла ZIP и таких классах, как DeflateStream (хотя даже это может не работать, если оно не сжато с использованием алгоритма DEFLATE. ). В этом сообщении блога есть некоторая информация о возможных альтернативах, но краткая версия заключается в том, что вам придется либо использовать стороннюю библиотеку, либо переписывать ее самостоятельно.
Если это ситуация, когда вы можете выпустить исходный код под GPL, вы можете скопировать и вставить код из проекта, такого как SharpZipLib , в свой собственный, тем самым обойдя требование использовать DLL. Но почему вы не можете использовать сторонние библиотеки DLL?
Сама платформа .NET (в настоящее время) не имеет официальной поддержки файлов ZIP. Доступна пара высококачественных сторонних бесплатных библиотек, и среда выполнения J # поддерживает их, как отмечали другие.
Я рекомендую стороннее решение, но если вы абсолютно не можете этого сделать, есть еще одна хитрость: ZipPackage , который является частью WPF. Он поддерживает ZIP-файлы (с добавлением дополнительных метаданных) и достаточно хорошо работает для чтения большинства ZIP-файлов.
Я не уверен, что это все еще доступно в VS2010, но в более ранних версиях J# был включен в VS, и J# включает java.util.zip
класс в vjslib.dll, и поскольку он является частью VS, это не сторонняя DLL, поэтому вы можете сделать это таким образом.
Вот статья CodeProject, показывающая, как это сделать: Zip и Unzip из программы C# с помощью J# runtime
Быстрый поиск в Google показал это. Ссылка MSDN класса GZipStream
GZipStream чаще всего используется для сжатия данных WCF. Не используйте это здесь.
Вы можете попробовать эту ZIP-библиотеку для сжатия в файлы: