Если целевая папка заархивированных файлов должна совпадать с исходной папкой, вы можете использовать каталог User Temp
в качестве временного хранилища.
Это потому, что вы не можете создать Zip-файл в той же директориион содержит файлы / папки для сжатия: он попытается сжать себя, вызывая исключение.
string sourceFolder =
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "ProjectX");
string destinationFolder = sourceFolder;
string ZippedFileName = "ZippedFile.zip";
string userTempFolder = Environment.GetEnvironmentVariable("Temp", EnvironmentVariableTarget.User);
string zippedTempFile = Path.Combine(userTempFolder, ZippedFileName);
if (File.Exists(zippedTempFile)) { File.Delete(zippedTempFile); }
ZipFile.CreateFromDirectory(sourceFolder, ZippedFileName);
File.Move(zippedTempFile, Path.Combine(destinationFolder, ZippedFileName));