web-dev-qa-db-fra.com

Installé .Net 4.5 mais ne peut pas utiliser la classe ZipFile dans Visual C #

Je suis un peu un débutant en programmation Visual Studio. 

J'ai récemment mis à niveau .Net 4.0 à 4.5 afin d'utiliser la classe ZipFile sous System.IO.Compression, mais une fois l'installation terminée, Visual Studio (j'utilise 2012) ne peut toujours pas reconnaître ZipFile comme nom de classe. 

Je me suis assuré que .Net 4.5 apparaît dans la liste des programmes du Panneau de configuration et que ma solution C # définit .Net Framework 4 comme infrastructure cible. 

Quelqu'un pourrait-il m'aider à comprendre cela?

29
wuxilixi

Voir Classe ZipFile sur MSDN. Il montre que la version du framework requise est 4.5. Une fois la version de l'infrastructure corrigée, vous avez ajouté une référence à l'assembly System.IO.Compression.FileSystem.dll et ajouté une directive using System.IO.Compression à votre classe.

61
Daniel Kelley

Vous devez également référencer l'assembly System.IO.Compression.FileSystem.dll.

13
platon

Juste pour clarifier les réponses précédentes, voici comment ajouter les références manuellement:

<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>

Les fichiers se trouvent dans C:\Windows\Microsoft.NET\Assembly\GAC_MSIL\et les sous-dossiers contiennent les informations nécessaires sur la version, la culture et PublicKeyToken.

7
The Conspiracy

Vous devez modifier la structure cible du projet actuel de .Net 4 à .Net 4.5.

5
daryal

Dans mon cas, je devais supprimer manuellement toutes les références dll commençant par System.IO.Compressionpuis ajouter un par un les éléments nécessaires (System.IO.Compression.FileSystem, etc. .) même si je n’ai écrit qu’une seule déclaration d’utilisation

using System.IO.Compression;

J'espère que ça aidera quelqu'un

1
Hugo Nava Kopp

Pour Windows Phone 8.1, utilisez NuGet pour ajouter le package Microsoft Compression à votre projet et le référencer.

Si vous aviez un projet WP8 plus ancien, vous utilisiez peut-être un autre package susceptible de créer des conflits avec la dll System.IO.Compression faisant partie du .NET 4.5 fourni avec WP8.1. Vous devez vous en débarrasser et utiliser Microsoft Compression, qui fonctionne en harmonie avec .NET 4.5. C'est comme ça que je suis arrivé ici!

1
Andy Weinstein

Nouvelles fonctionnalités de .NET 4.5

Améliorations de la compression Zip pour réduire la taille d'un fichier compressé. Voir l'espace de noms System.IO.Compression.

Ajoutez System.IO.Compression Assembly en tant que référence à votre projet. Vous peut également vouloir faire référence à System.IO.Compression.FileSystem Assembly pour accéder à trois méthodes d’extension (à partir de la classe ZipFileExtensions) pour la classe ZipArchive: CreateEntryFromFile, CreateEntryFromFile, et ExtractToDirectory. Ces méthodes d'extension vous permettent de compresser et décompresser le contenu de l'entrée dans un fichier.

Échantillon

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

Références:
http://msdn.Microsoft.com/en-us/library/ms171868.aspx
http://www.tugberkugurlu.com/archive/net-4-5-to-support-Zip-fichier-manipulation-out-de-la-box

1
Kiquenet