Я не нашел класс "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' не существует в текущем контексте



Как я могу решить это ?

701   9  

9 ответов:

вам нужно добавить ссылку dll в сборку, "System.IO.Compression.FileSystem.dll" - и убедитесь, что вы используете .NET 4.5 (поскольку он не существует в более ранних фреймворках).

для получения информации вы можете найти сборку и версии .NET от MSDN

для тех, кто зеленые программисты в .NET, чтобы добавить ссылку DLL как MarcGravell отметил, выполните следующие действия:

чтобы добавить ссылку в Visual C#

  1. в обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите команду добавить ссылку.
  2. в диалоговом окне Добавление ссылки перейдите на вкладку, соответствующую типу компонента, который вы хотите ссылаться.
  3. выберите компоненты, на которые требуется ссылаться, и нажмите кнопку ЛАДНО.

в статье как добавить или удалить ссылки с помощью диалогового окна Добавить ссылку.

вы можете использовать внешний пакет, если вы не можете обновить до 4.5. Одним из таких является ионный.Застежка-молния.dll от DotNetZipLib.

using Ionic.Zip;

вы можете скачать ее здесь бесплатно. http://dotnetzip.codeplex.com/

просто перейдите к ссылкам и добавьте "System.IO.Compression. FileSystem".

Я знаю, что это старая тема, но я просто не могу уклониться от публикации полезной информации об этом. Я вижу, что вопрос 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

добавить System.IO.Compression. ZipFile в качестве ссылки nuget он работает

Comments

    Ничего не найдено.