Я не нашел класс "ZipFile" в "системе".ИО.Пространство имен " сжатие
Я не могу использовать класс "Zipfile" в системе "пространство имен".ИО.Сжатие " мой код:
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#
- в обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите команду добавить ссылку.
- в диалоговом окне Добавить ссылку выберите вкладку, указывающую тип компонента, на который вы хотите ссылаться.
- выберите компоненты, на которые требуется ссылаться, и нажмите кнопку ЛАДНО.
из статьи MSDN,как: добавление или удаление ссылок с помощью диалогового окна Добавить ссылку.
вы можете использовать внешний пакет, если вы не можете обновить до 4.5. Один из таких-ионный.Застежка-молния.dll из DotNetZipLib.
using Ionic.Zip;
вы можете скачать ее здесь бесплатно. http://dotnetzip.codeplex.com/
Я знаю, что это старый поток, но я просто не могу уклониться от публикации полезной информации об этом. Я вижу, назрел вопрос застегивать и ответы nearlly большинство общих вопросов.
чтобы обойти проблемы фреймворка с использованием 4.5+... Их класс ZipStorer создан jaime-olivares:https://github.com/jaime-olivares/zipstorer, он также добавил пример того, как использовать этот класс, а также добавил пример того, как искать конкретное имя файла, а также.
и для справки о том, как использовать это и перебирать для определенного расширения файла в качестве примера вы можете сделать это:
#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();
}
в обозревателе решений щелкните правой кнопкой мыши ссылки, затем разверните сборки, найдите систему.ИО.Сжатие.Файловая система и убедитесь, что она проверена. Тогда вы можете использовать его в своем классе -using System.IO.Compression;
System.IO.Compression
теперь доступен как пакет nuget поддерживается Microsoft.
использовать ZipFile
вам нужно скачать System.IO.Compression.ZipFile
пакет nuget.
проблема здесь в том, что вы только что добавили ссылку на систему.ИО.Сжатие отсутствует ссылка на 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