Não consigo usar a classe "Zipfile" no namespace "System.IO.Compression", meu código é:
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);
}
}
}
o erro é:
O nome 'arquivo zip' não existe no contexto atual
Como posso resolver isso?
Respostas:
Você precisa de uma referência extra para isso; a maneira mais conveniente de fazer isso é por meio do pacote NuGet System.IO.Compression.ZipFile
Se você estiver trabalhando no .NET Framework sem NuGet, você precisa adicionar uma referência dll ao assembly, "System.IO.Compression.FileSystem.dll" - e garantir que está usando pelo menos .NET 4.5 (já que não existem em estruturas anteriores).
Para obter informações, você pode encontrar o assembly e a (s) versão (ões) .NET no MSDN
fonte
FileSystem
referência. ApenasSystem.IO.Compression
. Obrigado. Estranho que requer um arquivo que não está no namespace da classe. É um desvio estranho da convenção.Para aqueles que são programadores verdes em .NET, para adicionar a referência de DLL como MarcGravell observou, siga estas etapas:
Para adicionar uma referência no Visual C #
Do artigo MSDN, Como: Adicionar ou Remover Referências Usando a Caixa de Diálogo Adicionar Referência .
fonte
você pode usar um pacote externo se não conseguir atualizar para 4.5. Um deles é o Ionic.Zip.dll de DotNetZipLib.
você pode baixá-lo aqui, é grátis. http://dotnetzip.codeplex.com/
fonte
Basta ir para Referências e adicionar "System.IO.Compression.FileSystem".
fonte
Uma solução que me ajudou: Vá para Ferramentas> Gerenciador de pacotes NuGet> Gerenciar o pacote NuGet para solução ...> Navegar> Pesquisar System.IO.Compression.ZipFile e instale-o
fonte
Eu sei que este é um tópico antigo, mas não posso deixar de postar algumas informações úteis sobre isso. Eu vejo a pergunta Zip surgir muito e isso responde quase a maioria das perguntas comuns.
Para contornar problemas de estrutura de usar 4.5 + ... Sua classe ZipStorer criada por jaime-olivares: https://github.com/jaime-olivares/zipstorer , ele também adicionou um exemplo de como usar esta classe como bem e também adicionou um exemplo de como pesquisar um nome de arquivo específico.
E para referência sobre como usar isso e iterar para uma determinada extensão de arquivo como exemplo, você pode fazer isso:
fonte
System.IO.Compression
agora está disponível como um pacote nuget mantido pela Microsoft.Para usar,
ZipFile
você precisa baixar oSystem.IO.Compression.ZipFile
pacote nuget .fonte
Adicione System.IO.Compression.ZipFile como referência nuget que está funcionando
fonte
No explorador de soluções, clique com o botão direito em References e, em seguida, clique para expandir os assemblies, localize System.IO.Compression.FileSystem e certifique-se de que esteja marcado. Então você pode usá-lo em sua aula -
using System.IO.Compression;
Adicionar Captura de Tela de Montagem de Referência
fonte
O problema aqui é que você acabou de adicionar a referência a System.IO.Compression, mas está faltando a referência a System.IO.Compression.Filesystem.dll
E você precisa fazer isso em .net 4.5 ou posterior (porque não existe em versões anteriores).
Acabei de postar um script no TechNet Talvez alguém ache útil, pois requer .net 4.5 ou 4.7
https://gallery.technet.microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a7530
fonte