Je n’ai pas trouvé de classe «ZipFile» dans l’espace de noms «System.IO.Compression»

Je ne peux pas utiliser la classe “Zipfile” dans l’espace de nom “System.IO.Compression”, mon code est le suivant:

using System; using System.IO; using System.IO.Compression; namespace ConsoleApplication { class Program { static void Main(ssortingng[] args) { ssortingng startPath = @"c:\example\start"; ssortingng zipPath = @"c:\example\result.zip"; ssortingng extractPath = @"c:\example\extract"; ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest,true); ZipFile.ExtractToDirectory(zipPath, extractPath); } } } 

l’erreur est la suivante:

Le nom “zipfile” n’existe pas dans le contexte actuel

Comment puis-je le résoudre?

Vous devez append une référence dll à l’assembly, “System.IO.Compression.FileSystem.dll” – et vous assurer que vous utilisez .NET 4.5 (car il n’existe pas dans les précédentes structures).

Pour plus d’informations, vous pouvez trouver l’assembly et la version .NET à partir de MSDN

Pour ceux qui sont des programmeurs verts dans .NET, pour append la référence de DLL comme l’ a noté MarcGravell , procédez comme suit:

Pour append une référence dans Visual C #

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet et cliquez sur Ajouter une référence.
  2. Dans la boîte de dialog Ajouter une référence, sélectionnez l’onglet indiquant le type de composant que vous souhaitez référencer.
  3. Sélectionnez les composants que vous souhaitez référencer, puis cliquez sur OK.

À partir de l’article MSDN, Comment: append ou supprimer des références à l’aide de la boîte de dialog Ajouter une référence .

vous pouvez utiliser un package externe si vous ne pouvez pas passer à la version 4.5. Un tel est Ionic.Zip.dll de DotNetZipLib.

 using Ionic.Zip; 

vous pouvez le télécharger ici, c’est gratuit. http://dotnetzip.codeplex.com/

Allez simplement dans Références et ajoutez “System.IO.Compression.FileSystem”.

Je sais que c’est un vieux sujet, mais je ne peux pas éviter de publier des informations utiles à ce sujet. Je vois beaucoup la question Zip et cela répond presque à la plupart des questions courantes.

Pour contourner les problèmes de framework liés à l’utilisation de 4.5 + … Leur classe est une classe ZipStorer créée par jaime-olivares: https://github.com/jaime-olivares/zipstorer , il a également ajouté un exemple d’utilisation de cette classe en tant que bien et a également ajouté un exemple de la recherche d’un nom de fichier spécifique.

Et pour référence sur la façon de l’utiliser et de parcourir une certaine extension de fichier comme exemple, vous pouvez le faire:

 #region ///  /// Custom Method - Check if 'ssortingng' has '.png' or '.PNG' extension. ///  static bool HasPNGExtension(ssortingng filename) { return Path.GetExtension(filename).Equals(".png", SsortingngComparison.InvariantCultureIgnoreCase) || Path.GetExtension(filename).Equals(".PNG", SsortingngComparison.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. ssortingng ZIPfileLocationHere = @"C:\Users\Name\Desktop\test.zip"; ssortingng EXTRACTIONLocationHere = @"C:\Users\Name\Desktop"; //Opens existing zip file. ZipStorer zip = ZipStorer.Open(ZIPfileLocationHere, FileAccess.Read); //Read all directory contents. List dir = zip.ReadCentralDir(); foreach (ZipStorer.ZipFileEntry entry in dir) { try { //If the files in the zip are "*.png or *.PNG" extract them. ssortingng 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(); } 

Dans l’explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez pour développer des assemblys, recherchez System.IO.Compression.FileSystem et vérifiez qu’il est coché. Ensuite, vous pouvez l’utiliser dans votre classe en using System.IO.Compression;

Ajouter une capture d’écran d’assemblage de référence

System.IO.Compression est maintenant disponible en tant que package nuget géré par Microsoft.

Pour utiliser ZipFile vous devez télécharger le package nuget System.IO.Compression.ZipFile .

Le problème ici est que vous venez d’append la référence à System.IO.Compression, il manque la référence à System.IO.Compression.Filesystem.dll

Et vous devez le faire sur .net 4.5 ou version ultérieure (car il n’existe pas sur les anciennes versions).

Je viens de poster un script sur TechNet Peut-être que quelqu’un trouverait cela utile nécessite .net 4.5 ou 4.7

https://gallery.technet.microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a7530

Ajouter System.IO.Compression.ZipFile comme référence nuget