Ich kann die Klasse "Zipfile" nicht im Namensraum "System.IO.Compression" verwenden. Mein Code lautet:
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);
}
}
}
Der Fehler ist:
Der Name 'zipfile' existiert im aktuellen Kontext nicht
Wie kann ich das lösen?
Antworten:
Sie benötigen hierfür eine zusätzliche Referenz. Der bequemste Weg, dies zu tun, ist über das NuGet-Paket System.IO.Compression.ZipFile
Wenn Sie mit .NET Framework ohne NuGet arbeiten, müssen Sie der Assembly "System.IO.Compression.FileSystem.dll" einen DLL-Verweis hinzufügen - und sicherstellen, dass Sie mindestens .NET 4.5 verwenden (da dies nicht der Fall ist) in früheren Frameworks existieren).
Für Informationen finden Sie die Assembly- und .NET-Version (en) von MSDN
quelle
FileSystem
Referenz. NurSystem.IO.Compression
. Vielen Dank. Seltsam, dass eine Datei erforderlich ist, die sich nicht im Namespace der Klasse befindet. Es ist eine merkwürdige Abweichung von der Konvention.Wenn Sie in .NET grüne Programmierer sind , führen Sie die folgenden Schritte aus , um die DLL-Referenz wie von MarcGravell angegeben hinzuzufügen :
So fügen Sie eine Referenz in Visual C # hinzu
Aus dem MSDN-Artikel : Gewusst wie: Hinzufügen oder Entfernen von Referenzen mithilfe des Dialogfelds Referenz hinzufügen .
quelle
Sie können ein externes Paket verwenden, wenn Sie kein Upgrade auf 4.5 durchführen können. Eine davon ist Ionic.Zip.dll von DotNetZipLib.
Sie können es hier kostenlos herunterladen. http://dotnetzip.codeplex.com/
quelle
Gehen Sie einfach zu Referenzen und fügen Sie "System.IO.Compression.FileSystem" hinzu.
quelle
Eine Lösung, die mir geholfen hat: Gehen Sie zu Tools> NuGet Package Manager> NuGet Packaged for Solution verwalten ...> Durchsuchen> Nach System.IO.Compression.ZipFile suchen und installieren
quelle
Ich weiß, dass dies ein alter Thread ist, aber ich kann mich einfach nicht davon abhalten, nützliche Informationen dazu zu veröffentlichen. Ich sehe, dass die Zip-Frage häufig auftaucht, und dies beantwortet fast die meisten häufig gestellten Fragen.
Um Framework-Probleme bei der Verwendung von 4.5 + zu umgehen ... Es handelt sich um eine ZipStorer-Klasse, die von jaime-olivares erstellt wurde: https://github.com/jaime-olivares/zipstorer . Er hat auch ein Beispiel für die Verwendung dieser Klasse als hinzugefügt gut und hat auch ein Beispiel hinzugefügt, wie man auch nach einem bestimmten Dateinamen sucht.
Als Referenz zur Verwendung und zum Durchlaufen einer bestimmten Dateierweiterung als Beispiel können Sie Folgendes tun:
quelle
System.IO.Compression
ist jetzt als Nuget-Paket verfügbar , das von Microsoft verwaltet wird.Zur Verwendung müssen
ZipFile
Sie dasSystem.IO.Compression.ZipFile
Nuget-Paket herunterladen .quelle
Fügen Sie System.IO.Compression.ZipFile als Nuget-Referenz hinzu, die gerade funktioniert
quelle
Klicken Sie im Lösungs-Explorer mit der rechten Maustaste auf Referenzen, und klicken Sie dann auf, um Assemblys zu erweitern. Suchen Sie System.IO.Compression.FileSystem und stellen Sie sicher, dass es aktiviert ist. Dann können Sie es in Ihrer Klasse verwenden -
using System.IO.Compression;
Screenshot der Referenzbaugruppe hinzufügen
quelle
Das Problem hierbei ist, dass Sie gerade den Verweis auf System.IO.Compression hinzugefügt haben. Es fehlt der Verweis auf System.IO.Compression.Filesystem.dll
Und Sie müssen dies unter .net 4.5 oder höher tun (da es in älteren Versionen nicht vorhanden ist).
Ich habe gerade ein Skript auf TechNet gepostet. Vielleicht würde es jemand nützlich finden, für den .net 4.5 oder 4.7 erforderlich ist
https://gallery.technet.microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a7530
quelle