Je ne peux pas utiliser la classe "Zipfile" dans l'espace de nom "System.IO.Compression" mon code est:
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);
}
}
}
l'erreur est:
Le nom 'zipfile' n'existe pas dans le contexte actuel
Comment puis-je le résoudre?
Réponses:
Vous avez besoin d'une référence supplémentaire pour cela; le moyen le plus pratique de le faire est d'utiliser le package NuGet System.IO.Compression.ZipFile
Si vous travaillez sur .NET Framework sans NuGet, vous devez ajouter une référence dll à l'assembly, «System.IO.Compression.FileSystem.dll» - et vous assurer que vous utilisez au moins .NET 4.5 (car il ne existent dans les cadres précédents).
Pour plus d'informations, vous pouvez trouver l'assembly et la (les) version (s) .NET de MSDN
la source
FileSystem
référence. SeulementSystem.IO.Compression
. Merci. Bizarre que cela nécessite un fichier qui ne se trouve pas dans l'espace de noms de la classe. C'est un étrange écart par rapport aux conventions.Pour ceux qui sont des programmeurs verts dans .NET, pour ajouter la référence DLL comme MarcGravell l'a noté, procédez comme suit:
Pour ajouter une référence dans Visual C #
À partir de l'article MSDN, Comment: ajouter ou supprimer des références à l'aide de la boîte de dialogue Ajouter une référence .
la source
vous pouvez utiliser un package externe si vous ne pouvez pas passer à la version 4.5. L'un d'eux est Ionic.Zip.dll de DotNetZipLib.
vous pouvez le télécharger ici, c'est gratuit. http://dotnetzip.codeplex.com/
la source
Allez simplement dans Références et ajoutez "System.IO.Compression.FileSystem".
la source
Une solution qui m'a aidé: Allez dans Outils> Gestionnaire de packages NuGet> Gérer NuGet Packaged pour la solution ...> Parcourir> Rechercher System.IO.Compression.ZipFile et installez-le
la source
Je sais que c'est un vieux fil de discussion, mais je ne peux tout simplement pas éviter de publier des informations utiles à ce sujet. Je vois que la question Zip revient souvent et cela répond presque à la plupart des questions courantes.
Pour contourner les problèmes de framework liés à l'utilisation de 4.5 + ... Il s'agit d'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 comme et a également ajouté un exemple sur la façon de rechercher un nom de fichier spécifique.
Et pour savoir comment l'utiliser et parcourir une certaine extension de fichier à titre d'exemple, vous pouvez le faire:
la source
System.IO.Compression
est désormais disponible en tant que package nuget géré par Microsoft.Pour l'utiliser,
ZipFile
vous devez télécharger leSystem.IO.Compression.ZipFile
package nuget .la source
Ajoutez System.IO.Compression.ZipFile comme référence nuget, il fonctionne
la source
Dans l'explorateur de solutions, cliquez avec le bouton droit sur Références, puis cliquez pour développer les assemblys, recherchez System.IO.Compression.FileSystem et assurez-vous qu'il est coché. Ensuite, vous pouvez l'utiliser dans votre classe -
using System.IO.Compression;
Ajouter une capture d'écran d'assemblage de référence
la source
Le problème ici est que vous venez d'ajouter 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 publier un script sur TechNet Peut-être que quelqu'un trouverait cela utile, il nécessite .net 4.5 ou 4.7
https://gallery.technet.microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a7530
la source