For some reason I always thought that you needed to add a third party library to make a zip file in C#, but apparently you can do it easily with an API that already exists in the framework.
ZipArchive
All you need to do is create a file and associate the file stream with the ZipArchive. You can add files to the archive either straight from disk, or by writing them in memory.
Note that you have to provide the ZipArchiveMode.Create if you’re making a new zip file, otherwise a System.IO.InvalidDataException will be thrown because the file doesn’t exist on disk.