2013-01-08 8 views
26

Jestem początkującym programistą Visual Studio.Zainstalowano .Net 4.5, ale nie można używać klasy ZipFile w programie Visual C#

Niedawno zaktualizowałem .Net 4.0 do 4.5, aby użyć klasy ZipFile w opcji System.IO.Compression, ale po zakończeniu instalacji program Visual Studio (używam w 2012 roku) nadal nie rozpoznaje ZipFile jako nazwy klasy.

Upewniłem się, że .Net 4.5 pojawi się na liście programów Panelu sterowania, a moje C# rozwiązanie ustawia .Net Framework 4 jako ramę docelową.

Czy ktoś może mi pomóc to rozwiązać?

Odpowiedz

57

Zobacz ZipFile Class na stronie MSDN. Pokazuje, że wymagana wersja framework ma 4.5. Po ustaleniu wersji szkieletu sprawdź, czy dodano odwołanie do zestawu System.IO.Compression.FileSystem.dll i dodałem do klasy dyrektywę o nazwie System.IO.Compression.

+4

Tak, przegapiłem krok referencyjny. Działa teraz, dzięki! – wuxilixi

+1

Dzięki za to milion! Pomyślałem, że mam problem z możliwością połączenia z zespołami .net 4.5. Ale przygwoździłeś to! – SteckDEV

+2

Tak, trzeba dodać obie referencje: System.IO.Compression.FileSystem i System.IO.Compression do projektu. – rfolt

5

Należy zmienić docelową strukturę bieżącego projektu z .Net 4 na .Net 4.5.

+0

uczynił tak, jak mówiłeś i działa. Dzięki! – wuxilixi

12

Należy również odwołać się do zestawu System.IO.Compression.FileSystem.dll.

+0

Ah, rozumiem. Dzięki za pomoc! Zastanawiasz się, w jaki sposób dodanie zestawu w referencji różni się od zwykłego wpisania w kodzie "using System.IO.Compression"? Na przykład, mam "using System.Configuration" w kodzie, ale nie odwołuję go i program nadal działa poprawnie. – wuxilixi

+1

@ user1958597, Dodawanie zespołu do listy referencji oznacza, że ​​wszystkie klasy publiczne z tego zespołu są dostępne dla kodu. "using" pozwala ci skrócić kod. Mam na myśli, jeśli dodasz za pomocą System.IO.Compression; do twojego kodu, będziesz mógł napisać ZipFile zip = ... zamiast System.IO.Compression.ZipFile zip = ... – platon

1

Nowe funkcje w .NET 4,5

ulepszenia kompresji ZIP w celu zmniejszenia rozmiaru pliku skompresowanego. Zobacz obszar nazw System.IO.Compression.

Dodaj System.IO.Compression montaż jako odniesienie do projektu. Ci może również chcą odwołać System.IO.Compression.FileSystem montaż dostęp do trzech metod przedłużających (z klasy ZipFileExtensions) dla ZipArchive klasy: CreateEntryFromFile, CreateEntryFromFile, i ExtractToDirectory. Te metody rozszerzenia umożliwiają kompresowanie i dekompresję zawartości wpisu do pliku.

Przykładowe

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

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

Wystarczy do dalszego wyjaśnienia wcześniejsze odpowiedzi, oto jak dodać odniesienia ręcznie:

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

Pliki można znaleźć w C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \, a podfoldery zawierają również niezbędne informacje o wersji, kulturze i kluczu PublicKeyToken.

1

W przypadku Windows Phone 8.1, użyj NuGet, aby dodać pakiet Microsoft Compression do swojego projektu i odwołać się do niego.

Jeśli miałeś starszy projekt WP8, mógłbyś użyć innego pakietu, który powodowałby konflikty z biblioteką System.IO.Compression, która jest częścią .NET 4.5, która jest dostarczana z WP8.1. Musisz się tego pozbyć i użyć kompresji Microsoft, która działa harmonijnie z .NET 4.5.Tak się tu dostałem!

0

W moim przypadku musiałem ręcznie usunąć wszystkie dll odniesienia, które rozpoczęte z System.IO.Compression a następnie dodać jeden po drugim potrzebne ci (System.IO.Compression.FileSystem, itd.), Mimo ja tylko napisałem jeden using

using System.IO.Compression; 

mam nadzieję, że to pomaga someons

Powiązane problemy