No puedo usar la clase "Zipfile" en el espacio de nombres "System.IO.Compression" mi código es:
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);
}
}
}
el error es:
El nombre 'zipfile' no existe en el contexto actual
¿Cómo puedo solucionarlo?
Respuestas:
Necesita una referencia adicional para esto; la forma más conveniente de hacerlo es a través del paquete NuGet System.IO.Compression.ZipFile
Si está trabajando en .NET Framework sin NuGet, debe agregar una referencia dll al ensamblado, "System.IO.Compression.FileSystem.dll", y asegurarse de que está utilizando al menos .NET 4.5 (ya que no existen en marcos anteriores).
Para obtener información, puede encontrar el ensamblado y las versiones de .NET en MSDN
fuente
FileSystem
referencia. SóloSystem.IO.Compression
. Gracias. Es extraño que requiera un archivo que no está en el espacio de nombres de la clase. Es una extraña desviación de la convención.Para aquellos que son programadores ecológicos en .NET, para agregar la referencia de DLL como señaló MarcGravell , siga estos pasos:
Para agregar una referencia en Visual C #
En el artículo de MSDN, Cómo: Agregar o quitar referencias mediante el cuadro de diálogo Agregar referencia .
fuente
puede usar un paquete externo si no puede actualizar a 4.5. Uno de ellos es Ionic.Zip.dll de DotNetZipLib.
puedes descargarlo aquí, es gratis. http://dotnetzip.codeplex.com/
fuente
Simplemente vaya a Referencias y agregue "System.IO.Compression.FileSystem".
fuente
Una solución que me ayudó: vaya a Herramientas> Administrador de paquetes NuGet> Administrar NuGet Packaged for Solution ...> Examinar> Busque System.IO.Compression.ZipFile e instálelo
fuente
Sé que este es un hilo antiguo, pero no puedo evitar publicar información útil sobre esto. Veo que la pregunta de Zip surge mucho y esto responde casi a la mayoría de las preguntas comunes.
Para sortear los problemas del framework de usar 4.5 + ... Hay una clase ZipStorer creada por jaime-olivares: https://github.com/jaime-olivares/zipstorer , también ha agregado un ejemplo de cómo usar esta clase como bien y también ha agregado un ejemplo de cómo buscar un nombre de archivo específico.
Y como referencia sobre cómo usar esto e iterar para una determinada extensión de archivo como ejemplo, puede hacer esto:
fuente
System.IO.Compression
ahora está disponible como un paquete nuget mantenido por Microsoft.Para usarlo
ZipFile
, debe descargar elSystem.IO.Compression.ZipFile
paquete nuget .fuente
Agregue System.IO.Compression.ZipFile como referencia nuget, está funcionando
fuente
En el explorador de soluciones, haga clic con el botón derecho en Referencias, luego haga clic para expandir ensamblados, busque System.IO.Compression.FileSystem y asegúrese de que esté marcado. Entonces puedes usarlo en tu clase -
using System.IO.Compression;
Agregar captura de pantalla de ensamblaje de referencia
fuente
El problema aquí es que acaba de agregar la referencia a System.IO.Compression, falta la referencia a System.IO.Compression.Filesystem.dll
Y debe hacerlo en .net 4.5 o posterior (porque no existe en versiones anteriores).
Acabo de publicar un script en TechNet. Quizás a alguien le resulte útil. Requiere .net 4.5 o 4.7.
https://gallery.technet.microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a7530
fuente