2013-01-08 20 views
26

Visual Studioプログラミングの初心者です。.Net 4.5がインストールされていますが、Visual C#でZipFileクラスを使用できません。

最近System.IO.Compressionの下でZipFileクラスを使用するために.Net 4.0を4.5にアップグレードしましたが、インストールが完了した後、Visual Studio(私は2012を使用しています)は依然としてZipFileをクラス名として認識できません。

コントロールパネルのプログラムリストに.Net 4.5が表示され、C#ソリューションが.Net Framework 4をターゲットフレームワークとして設定していることを確認しました。

誰かが私にこれを理解させるのに役立つでしょうか?

答えて

57

MSDNのZipFile Classを参照してください。必要なフレームワークバージョンが4.5であることを示しています。フレームワークのバージョンが確定したら、System.IO.Compression.FileSystem.dllアセンブリへの参照を追加し、クラスにSystem.IO.Compressionディレクティブを使用して追加しました。

+4

うん、私は参照ステップを逃した。ありがとう! – wuxilixi

+1

ありがとうございました!私は、.net 4.5のアセンブリを呼び出すことができるという問題を抱えていると思っていました。しかし、あなたはそれを釘付けにしました! – SteckDEV

+2

はい、両方の参照:System.IO.Compression.FileSystemとSystem.IO.Compressionをプロジェクトに追加する必要があります。 – rfolt

5

現在のプロジェクトのターゲットフレームワークを.Net 4から.Net 4.5に変更する必要があります。

+0

を行なったし、それが動作するのに役立ちます願っています単一usingステートメント

using System.IO.Compression; 

を書きました。ありがとう! – wuxilixi

12

また、System.IO.Compression.FileSystem.dllアセンブリを参照する必要があります。

+0

ああ、私はそれを得た。ご協力いただきありがとうございます!単に「System.IO.Compressionを使用して」コードに入力するのとは異なるリファレンスでアセンブリを追加する方法は不思議です。たとえば、コードでSystem.Configurationを使用していますが、参照していないので、プログラムは正常に動作します。 – wuxilixi

+1

@ user1958597、参照リストにアセンブリを追加すると、このアセンブリのすべてのパブリッククラスをコードで使用できるようになります。 "using"を使用すると、コードを短くすることができます。私はあなたがSystem.IO.Compressionを使って追加した場合を意味します。あなたのコードには、System.IO.Compression.ZipFile zip = ...の代わりにZipFile zip = ...を書くことができます。 – platon

1

は新しい圧縮ファイルのサイズを小さくするために、.NET 4.5

ZIP圧縮の改善をでています。 System.IO.Compression名前空間を参照してください。

プロジェクトへの参照としてSystem.IO.Compressionアセンブリを追加します。 CreateEntryFromFile、CreateEntryFromFile、 とExtractToDirectory:あなたは もZIPARCHIVEクラスため (ZipFileExtensionsクラスからの)3つの拡張メソッドにアクセスするためにSystem.IO.Compression.FileSystemアセンブリ を参照することもできます。これらの拡張メソッドを使用すると、 を圧縮し、エントリの内容をファイルに解凍することができます。

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

参照

サンプル:
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

ただ、さらに前回の答えを明確にするには、ここに参照を手動で追加する方法は次のとおりです。

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

ファイルはC:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \にあり、サブフォルダにはバージョン、カルチャ、PublicKeyTokenに必要な情報が含まれています。

1

Windows Phone 8.1の場合は、Microsoft圧縮パッケージをプロジェクトに追加して参照するためにNuGetを使用します。

以前のWP8プロジェクトを使用していた場合、WP8.1に付属の.NET 4.5の一部であるSystem.IO.Compression dllと競合する別のパッケージを使用している可能性があります。あなたはそれを取り除き、.NET 4.5と調和して動作するMicrosoft Compressionを使用する必要があります。それが私がここに来た方法です!

0

は、私の場合は、手動でSystem.IO.Compressionで開始されたすべてのDLLの参照を削除してから一つ一つを追加するために必要な必要なもの(System.IO.Compression.FileSystem、など)にもかかわらず、私は唯一の私は、これはあなたが言ったようにsomeons

関連する問題