Я не нашел класс "ZipFile" в пространстве имен " System. IO. Compression
Я не могу использовать класс "Zipfile "в пространстве имен" System.IO.Compression " мой код :
using System;
using System.IO;
using System.IO.Compression;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
string startPath = @"c:examplestart";
string zipPath = @"c:exampleresult.zip";
string extractPath = @"c:exampleextract";
ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest,true);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
}
ошибка :
имя 'zipfile' не существует в текущем контексте
Как я могу решить это ?
9 ответов:
вам нужно добавить ссылку dll в сборку, "System.IO.Compression.FileSystem.dll" - и убедитесь, что вы используете .NET 4.5 (поскольку он не существует в более ранних фреймворках).
для получения информации вы можете найти сборку и версии .NET от MSDN
для тех, кто зеленые программисты в .NET, чтобы добавить ссылку DLL как MarcGravell отметил, выполните следующие действия:
чтобы добавить ссылку в Visual C#
- в обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите команду добавить ссылку.
- в диалоговом окне Добавление ссылки перейдите на вкладку, соответствующую типу компонента, который вы хотите ссылаться.
- выберите компоненты, на которые требуется ссылаться, и нажмите кнопку ЛАДНО.
в статье как добавить или удалить ссылки с помощью диалогового окна Добавить ссылку.
вы можете использовать внешний пакет, если вы не можете обновить до 4.5. Одним из таких является ионный.Застежка-молния.dll от DotNetZipLib.
using Ionic.Zip;вы можете скачать ее здесь бесплатно. http://dotnetzip.codeplex.com/
Я знаю, что это старая тема, но я просто не могу уклониться от публикации полезной информации об этом. Я вижу, что вопрос Zip возникает много, и это отвечает почти на большинство общих вопросов.
чтобы обойти проблемы фреймворка с использованием 4.5+... Их класс ZipStorer, созданный Хайме-Оливаресом:https://github.com/jaime-olivares/zipstorer, он также добавил пример того, как использовать этот класс, а также добавил пример того, как искать a конкретное имя файла, а также.
и для справки о том, как использовать это и перебирать для определенного расширения файла в качестве примера вы можете сделать это:
#region /// <summary> /// Custom Method - Check if 'string' has '.png' or '.PNG' extension. /// </summary> static bool HasPNGExtension(string filename) { return Path.GetExtension(filename).Equals(".png", StringComparison.InvariantCultureIgnoreCase) || Path.GetExtension(filename).Equals(".PNG", StringComparison.InvariantCultureIgnoreCase); } #endregion private void button1_Click(object sender, EventArgs e) { //NOTE: I recommend you add path checking first here, added the below as example ONLY. string ZIPfileLocationHere = @"C:\Users\Name\Desktop\test.zip"; string EXTRACTIONLocationHere = @"C:\Users\Name\Desktop"; //Opens existing zip file. ZipStorer zip = ZipStorer.Open(ZIPfileLocationHere, FileAccess.Read); //Read all directory contents. List<ZipStorer.ZipFileEntry> dir = zip.ReadCentralDir(); foreach (ZipStorer.ZipFileEntry entry in dir) { try { //If the files in the zip are "*.png or *.PNG" extract them. string path = Path.Combine(EXTRACTIONLocationHere, (entry.FilenameInZip)); if (HasPNGExtension(path)) { //Extract the file. zip.ExtractFile(entry, path); } } catch (InvalidDataException) { MessageBox.Show("Error: The ZIP file is invalid or corrupted"); continue; } catch { MessageBox.Show("Error: An unknown error ocurred while processing the ZIP file."); continue; } } zip.Close(); }
в обозревателе решений щелкните правой кнопкой мыши ссылки, затем разверните узел сборки, найдите System.IO.Compression.FileSystem и убедитесь, что он установлен. Тогда вы можете использовать его в своем классе -
using System.IO.Compression;
System.IO.Compressionтеперь доступен как пакет nuget поддерживается Microsoft.использовать
ZipFileвам нужно скачатьSystem.IO.Compression.ZipFileпакет nuget.
проблема здесь в том, что вы только что добавили ссылку на System. IO. Compression отсутствует ссылка на System.IO.Compression.Filesystem.dll
и вам нужно сделать это на .net 4.5 или более поздней версии (потому что он не существует на более старых версиях).
Я только что опубликовал скрипт на TechNet может быть, кто-то найдет его полезным он требует .net 4.5 или 4.7
https://gallery.technet.microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a7530
Comments