Я не могу использовать класс «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:\example\start";
string zipPath = @"c:\example\result.zip";
string extractPath = @"c:\example\extract";
ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest,true);
ZipFile.ExtractToDirectory(zipPath, extractPath);
}
}
}
ошибка:
Имя "zipfile" не существует в текущем контексте.
Как я могу это решить?
Ответы:
Для этого вам понадобится дополнительная ссылка; удобнее всего сделать это с помощью пакета NuGet System.IO.Compression.ZipFile
Если вы работаете над .NET Framework без NuGet, вам необходимо добавить ссылку на dll в сборку «System.IO.Compression.FileSystem.dll» и убедиться, что вы используете .NET 4.5 (поскольку он не существуют в более ранних рамках).
Для информации вы можете найти сборку и версию .NET в MSDN.
источник
FileSystem
ссылки. ТолькоSystem.IO.Compression
. Спасибо. Странно, что для этого требуется файл, которого нет в пространстве имен класса. Это странное отклонение от условностей.Для тех, кто является зелеными программистами в .NET, чтобы добавить ссылку на DLL, как заметил MarcGravell , выполните следующие действия:
Чтобы добавить ссылку в Visual C #
Из статьи MSDN Как: добавить или удалить ссылки с помощью диалогового окна добавления ссылки .
источник
вы можете использовать внешний пакет, если не можете выполнить обновление до 4.5. Один из них - Ionic.Zip.dll от DotNetZipLib.
Вы можете скачать его здесь, это бесплатно. http://dotnetzip.codeplex.com/
источник
Просто перейдите в раздел «Ссылки» и добавьте «System.IO.Compression.FileSystem».
источник
Решение, которое мне помогло: перейдите в Инструменты> Диспетчер пакетов NuGet> Управление пакетом NuGet для решения ...> Обзор> Найдите System.IO.Compression.ZipFile и установите его.
источник
Я знаю, что это старая ветка, но я просто не могу уклониться от публикации некоторой полезной информации по ней. Я вижу, что вопрос о Zip возникает очень часто, и он отвечает почти на большинство распространенных вопросов.
Чтобы обойти проблемы фреймворка с использованием 4.5 + ... Это класс ZipStorer, созданный jaime-olivares: https://github.com/jaime-olivares/zipstorer , он также добавил пример того, как использовать этот класс в качестве ну и также добавил пример того, как искать конкретное имя файла.
И для справки о том, как использовать это и выполнить итерацию для определенного расширения файла в качестве примера, вы можете сделать это:
источник
System.IO.Compression
теперь доступен как пакет nuget, поддерживаемый Microsoft.Для использования
ZipFile
вам необходимо скачатьSystem.IO.Compression.ZipFile
пакет nuget .источник
Добавьте System.IO.Compression.ZipFile в качестве ссылки nuget, он работает
источник
В обозревателе решений щелкните правой кнопкой мыши "Ссылки", затем щелкните, чтобы развернуть сборки, найдите System.IO.Compression.FileSystem и убедитесь, что он установлен. Затем вы можете использовать его в своем классе -
using System.IO.Compression;
Добавить снимок экрана эталонной сборки
источник
Проблема здесь в том, что вы только что добавили ссылку на 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
источник