2013-01-08 13 views
26

Sono una specie di novizio della programmazione di Visual Studio.Installato. Net 4.5 ma non è possibile utilizzare la classe ZipFile in Visual C#

Ho aggiornato di recente da .Net 4.0 a 4.5 per utilizzare la classe ZipFile in System.IO.Compression, ma dopo aver completato l'installazione, Visual Studio (sto usando 2012) non è ancora in grado di riconoscere ZipFile come nome di classe.

Mi sono assicurato che .Net 4.5 venga visualizzato nell'elenco dei programmi del Pannello di controllo e la mia soluzione C# imposta .Net Framework 4 come framework di destinazione.

Qualcuno potrebbe aiutarmi a capirlo?

risposta

57

Vedere ZipFile Class su MSDN. Mostra la versione del framework richiesta è 4.5. Una volta risolta la versione del framework, è stato aggiunto un riferimento all'assembly System.IO.Compression.FileSystem.dll e aggiunto un utilizzo della direttiva System.IO.Compression alla classe.

+4

Sì, ho perso il punto di riferimento. Funziona ora, grazie! – wuxilixi

+1

Grazie mille per questo! Ho pensato che stavo avendo un problema con la possibilità di chiamare .net 4.5 assembly. Ma l'hai inchiodato! – SteckDEV

+2

Sì, è necessario aggiungere entrambi i riferimenti: System.IO.Compression.FileSystem e System.IO.Compression al progetto. – rfolt

5

È necessario modificare il framework di destinazione del progetto corrente da .Net 4 a .Net 4.5.

+0

fatto come hai detto e funziona. Grazie! – wuxilixi

12

È inoltre necessario fare riferimento all'assembly System.IO.Compression.FileSystem.dll.

+0

Ah, ho capito. Grazie per l'aiuto! Mi chiedo solo, in che modo l'aggiunta dell'assembly in riferimento è diversa dalla semplice digitazione di "using System.IO.Compression" nel codice? Ad esempio, ho "using System.Configuration" nel codice ma non lo riferimento e il programma funziona ancora OK. – wuxilixi

+1

@ user1958597, L'aggiunta di un assembly all'elenco di riferimenti indica che tutte le classi pubbliche di questo assembly sono disponibili per il codice. "using" ti permette di rendere il tuo codice più breve. Voglio dire se si aggiunge usando System.IO.Compression; al tuo codice, sarai in grado di scrivere ZipFile zip = ... invece di System.IO.Compression.ZipFile zip = ... – platon

1

nuove funzionalità di .NET 4,5

miglioramenti di compressione Zip per ridurre le dimensioni di un file compresso. Vedere lo spazio dei nomi System.IO.Compression.

Aggiungi System.IO.Compression assemblaggio come riferimento al progetto. Si consiglia inoltre di fare riferimento System.IO.Compression.FileSystem assemblaggio per accedere a tre metodi di estensione (dalla classe ZipFileExtensions) per la classe ZipArchive : CreateEntryFromFile, CreateEntryFromFile, e ExtractToDirectory. Questi metodi di estensione consentono di comprimere e decomprimere il contenuto della voce in un file.

campione

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

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

Giusto per chiarire ulteriormente le risposte precedenti, ecco come aggiungere i riferimenti manualmente:

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

I file possono essere trovati in C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ e le sottocartelle contengono le informazioni necessarie su versione, cultura e PublicKeyToken.

1

Per Windows Phone 8.1, utilizzare NuGet per aggiungere il pacchetto Microsoft Compression al progetto e fare riferimento ad esso.

Se si dispone di un progetto WP8 precedente, è possibile che si stia utilizzando un pacchetto diverso che creerebbe conflitti con la dll System.IO.Compression che fa parte di .NET 4.5 fornito con WP8.1. È necessario sbarazzarsi di questo e utilizzare Microsoft Compression che funziona in modo armonico con .NET 4.5.Ecco come sono arrivato qui!

0

Nel mio caso avevo bisogno di eliminare manualmente tutti i riferimenti DLL che è iniziato con System.IO.Compression e quindi aggiungere uno ad uno quelli necessari (System.IO.Compression.FileSystem, ecc), anche se ho scritto una sola istruzione using

using System.IO.Compression; 

Spero che questo aiuta someons

Problemi correlati