2013-01-08 3 views
26

Ich bin ein bisschen ein Neuling für Visual Studio-Programmierung.Installierte .Net 4.5 aber kann nicht ZipFile-Klasse in Visual C#

Ich habe kürzlich .Net 4.0 auf 4.5 aktualisiert, um die ZipFile-Klasse unter System.IO.Compression zu verwenden, aber nach der Installation konnte Visual Studio (ich benutze 2012) ZipFile immer noch nicht als Klassennamen erkennen.

Ich habe sichergestellt, dass. NET 4.5 in der Liste der Systemsteuerung angezeigt wird und meine C# -Lösung legt .Net Framework 4 als Zielframework fest.

Könnte mir jemand helfen, das herauszufinden?

Antwort

57

Siehe ZipFile Class auf MSDN. Es zeigt die erforderliche Framework-Version 4.5. Sobald die Framework-Version behoben ist, haben Sie einen Verweis auf die System.IO.Compression.FileSystem.dll Assembly hinzugefügt und Ihrer Klasse eine System.IO.Compression-Anweisung hinzugefügt.

+4

zu schreiben Yup, ich habe den Referenzschritt verpasst. Es funktioniert jetzt, danke! – wuxilixi

+1

Tausend Dank dafür! Ich dachte, ich hätte Probleme damit, .net 4.5-Assemblies aufrufen zu können. Aber du hast es geschafft! – SteckDEV

+2

Ja, Sie müssen beide Referenzen hinzufügen: System.IO.Compression.FileSystem und System.IO.Compression in Ihr Projekt. – rfolt

5

Sie müssen das Zielframework des aktuellen Projekts von .Net 4 zu .Net 4.5 ändern.

+0

tat, wie Sie gesagt haben und es funktioniert. Vielen Dank! – wuxilixi

12

Sie müssen auch auf die System.IO.Compression.FileSystem.dll-Assembly verweisen.

+0

Ah, ich habe es. Danke für Ihre Hilfe! Ich frage mich nur, wie sich das Hinzufügen der Assembly in Referenz von der einfachen Eingabe von "using System.IO.Compression" im Code unterscheidet. Zum Beispiel habe ich "using System.Configuration" im Code, aber nicht darauf verweisen und das Programm funktioniert immer noch OK. – wuxilixi

+1

@ user1958597, Das Hinzufügen einer Assembly zur Referenzliste bedeutet, dass Sie alle öffentlichen Klassen dieser Assembly für Ihren Code verfügbar machen. Mit "Verwenden" können Sie Ihren Code verkürzen. Ich meine, wenn Sie mit System.IO.Compression hinzufügen; zu deinem Code wirst du in der Lage sein, ZipFile zip = ... anstelle von System.IO.Compression.ZipFile zip = ... – platon

1

Neue Funktionen .NET 4,5

Zip-Kompression Verbesserungen in der Größe einer komprimierten Datei zu reduzieren. Siehe den System.IO.Compression-Namespace. In

System.IO.Compression Montage als Verweis auf Ihr Projekt. Sie können auch System.IO.Compression.FileSystem Montage für den Zugriff auf drei Erweiterungsmethoden (von der ZipFileExtensions Klasse) für die ZipArchive Klasse verweisen: CreateEntryFromFile, CreateEntryFromFile, und ExtractToDirectory. Diese Erweiterungsmethoden ermöglichen es Ihnen, zu komprimieren und den Inhalt des Eintrags in eine Datei zu dekomprimieren.

Probe

const string zipFilePath = @"C:\apps\Sample Pictures.zip"; 

using (FileStream zipFileToOpen = new FileStream(zipFilePath, FileMode.Open)) 
using (ZipArchive archive = new ZipArchive(zipFileToOpen, ZipArchiveMode.Read)) { 

     foreach (var zipArchiveEntry in archive.Entries) 
      Console.WriteLine(
       "FullName of the Zip Archive Entry: {0}", zipArchiveEntry.FullName 
      ); 
} 

Referenzen:
http://msdn.microsoft.com/en-us/library/ms171868.aspx
http://www.tugberkugurlu.com/archive/net-4-5-to-support-zip-file-manipulation-out-of-the-box

6

Nur um weiter die bisherigen Antworten zu klären, ist hier, wie die Referenzen manuell hinzuzufügen:

<configuration> 
    <system.web> 
    <compilation targetFramework="4.5"> 
     <assemblies> 
     <add assembly="System.IO.Compression, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     <add assembly="System.IO.Compression.FileSystem, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
    </compilation> 
    </system.web> 
</configuration> 

Die Dateien befinden sich in C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ und die Unterordner enthalten die notwendigen Informationen zu Version, Kultur und PublicKeyToken.

1

Verwenden Sie für Windows Phone 8.1 NuGet, um das Microsoft-Komprimierungspaket zu Ihrem Projekt hinzuzufügen und darauf zu verweisen.

Wenn Sie ein älteres WP8-Projekt hatten, haben Sie möglicherweise ein anderes Paket verwendet, das Konflikte mit der System.IO.Compression-DLL verursachte, die Teil von .NET 4.5 ist, das mit WP8.1 geliefert wird. Sie müssen das loswerden und Microsoft Compression verwenden, die harmonisch mit .NET 4.5 funktioniert.So bin ich hergekommen!

0

In meinem Fall musste ich alle dll Verweise manuell löschen, die mit System.IO.Compression gestartet und dann ein hinzufügen, indem man die benötigten diejenigen (System.IO.Compression.FileSystem, etc.) obwohl ich schrieb nur eine einzige Anweisung using

using System.IO.Compression; 

ich hoffe, das hilft someons

Verwandte Themen