web-dev-qa-db-ja.com

.Net 4.5をインストールしたが、Visual C#でZipFileクラスを使用できない

私はVisual Studioプログラミングの初心者です。

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

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

誰かが私がこれを理解するのを助けることができますか?

29
wuxilixi

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

63
Daniel Kelley

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

15
platon

以前の回答をさらに明確にするために、参照を手動で追加する方法を次に示します。

<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に関する必要な情報も含まれています。

7
The Conspiracy

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

5
daryal

私の場合、System.IO.Compressionで始まるすべてのdll参照を手動で削除します必要なものを1つずつ追加します( System.IO.Compression.FileSystemなど)単一のusingステートメントのみを記述した場合でも

using System.IO.Compression;

これが誰かを助けることを願っています

1
Hugo Nava Kopp

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

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

1
Andy Weinstein

。NET 4.5の新機能

圧縮ファイルのサイズを縮小するためのzip圧縮の改善。 System.IO.Compression名前空間を参照してください。

プロジェクトへの参照としてSystem.IO.CompressionAssemblyを追加します。 System.IO.Compression.FileSystemアセンブリを参照して、ZipArchiveクラス:CreateEntryFromFile、CreateEntryFromFile、およびExtractToDirectory。これらの拡張メソッドを使用すると、エントリの内容をファイルに圧縮および解凍できます。

サンプル

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

1
Kiquenet