Мы для этих целей использовали 7zip. Создали таблицу параметров, где указаны команды для командной строки и просто запускали процесс (new System.Diagnostics.ProcessStartInfo(...).Start() ), передавая ему параметры командной строкой
Теоретически можно использовать .NET (CLR Interoperability) для этих целей. Класс
GZipStream
тут пример можно посмотреть.