it-swarm.com.de

Installierte .NET 4.5, kann aber die ZipFile-Klasse in Visual C # nicht verwenden

Ich bin ein Neuling in der Visual Studio-Programmierung. 

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

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

Könnte mir jemand helfen, das herauszufinden?

29
wuxilixi

Siehe ZipFile-Klasse auf MSDN. Es zeigt, dass die erforderliche Framework-Version 4.5 ist. Wenn die Überprüfung der Framework-Version abgeschlossen ist, haben Sie einen Verweis auf die System.IO.Compression.FileSystem.dll-Assembly und eine using-System.IO.Compression-Direktive zu Ihrer Klasse hinzugefügt.

61
Daniel Kelley

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

13
platon

Um die vorherigen Antworten weiter zu erläutern, können Sie die Referenzen manuell hinzufü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 unter C:\Windows\Microsoft.NET\Assembly\GAC_MSIL\und die Unterordner enthalten die erforderlichen Informationen zu Version, Kultur und PublicKeyToken.

7
The Conspiracy

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

5
daryal

In meinem Fall musste ich alle DLL-Verweise, die mit System.IO.Compressionanfingen, manuell löschen und dann die benötigten nacheinander hinzufügen (System.IO.Compression.FileSystem usw.), obwohl ich nur eine einzige using-Anweisung geschrieben habe

using System.IO.Compression;

Ich hoffe das hilft jemandem

1
Hugo Nava Kopp

Verwenden Sie für Windows Phone 8.1 NuGet, um das Microsoft Compression-Paket 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 verursacht, 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 zusammenarbeitet. So bin ich hierher gekommen!

1
Andy Weinstein

Neue Funktionen in .NET 4.5

Verbesserungen der Zip-Komprimierung, um die Größe einer komprimierten Datei zu reduzieren. Siehe Namespace System.IO.Compression.

Fügen Sie System.IO.Compression Assembly als Referenz zu Ihrem Projekt hinzu. Sie kann auch auf System.IO.Compression.FileSystem Assembly .__ verweisen. um auf drei Erweiterungsmethoden zuzugreifen (von der ZipFileExtensions-Klasse) für die ZipArchive-Klasse: CreateEntryFromFile, CreateEntryFromFile, und ExtractToDirectory. Mit diesen Erweiterungsmethoden können Sie .__ komprimieren. und dekomprimieren Sie den Inhalt des Eintrags in eine Datei.

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
            );
}

Verweise:
http://msdn.Microsoft.com/de-de/library/ms171868.aspx
http://www.tugberkugurlu.com/archive/net-4-5-to-support-Zip-file-manipulation-out-of-the-box

1
Kiquenet