web-dev-qa-db-ja.com

「System.IO.Compression」名前空間に「ZipFile」クラスが見つかりませんでした

私のコードは、名前空間「System.IO.Compression」で「Zipfile」クラスを使用できません。

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string startPath = @"c:\example\start";
            string zipPath = @"c:\example\result.Zip";
            string extractPath = @"c:\example\extract";

            ZipFile.CreateFromDirectory(startPath, zipPath, CompressionLevel.Fastest,true);

            ZipFile.ExtractToDirectory(zipPath, extractPath);
        }
    }
}

エラーは次のとおりです。

名前 'zipfile'は現在のコンテキストに存在しません

どうすれば解決できますか?

108
Mohamed Kamal

アセンブリ「dll」をアセンブリに追加する必要があります。「System.IO.Compression.FileSystem.dll」-.NET 4.5を使用していることを確認してください(以前のフレームワークには存在しないため)。

詳細については、アセンブリと.NETバージョンを見つけることができます MSDNから

197
Marc Gravell

.NETで環境に優しいプログラマーである場合、DLL参照を MarcGravell として記載するには、次の手順に従います。

Visual C#で参照を追加するには

  1. ソリューションエクスプローラーで、プロジェクトノードを右クリックし、[参照の追加]をクリックします。
  2. [参照の追加]ダイアログボックスで、参照するコンポーネントのタイプを示すタブを選択します。
  3. 参照するコンポーネントを選択し、[OK]をクリックします。

MSDN記事から 方法:[参照の追加]ダイアログボックスを使用して参照を追加または削除する

30
Will Ediger

4.5にアップグレードできない場合は、外部パッケージを使用できます。その1つがDotNetZipLibのIonic.Zip.dllです。

using Ionic.Zip;

こちらから無料でダウンロードできます。 http://dotnetzip.codeplex.com/

18
John Faulkner

参照に移動して、「System.IO.Compression.FileSystem」を追加するだけです。

9
user6604144

私を助けたソリューション:[ツール]> [NuGetパッケージマネージャー]> [ソリューションのNuGetパッケージの管理...]> [参照]> [System.IO.Compression.ZipFileの検索とインストール]に移動します。

1
Hanssss

System.IO.Compressionは、Microsoftが管理する nugetパッケージ として利用できるようになりました。

ZipFileを使用するには、System.IO.Compression.ZipFilenuget package をダウンロードする必要があります。

0
Michał Jarzyna

ソリューションエクスプローラーで、[参照設定]を右クリックし、アセンブリをクリックして展開し、System.IO.Compression.FileSystemを見つけて、チェックされていることを確認します。その後、クラスで使用できます-using System.IO.Compression;

参照アセンブリのスクリーンショットを追加

0
Erik Rausch

私はこれが古いスレッドであることを知っていますが、これに関する有用な情報を投稿することを避けられません。 Zipの質問がたくさん出てくるのがわかりますが、これはほとんどの一般的な質問にほぼ答えています。

4.5+を使用するフレームワークの問題を回避するには... jaime-olivaresによって作成されたZipStorerクラスです。 https://github.com/jaime-olivares/zipstorer このクラスの使用方法についても説明し、特定のファイル名も検索する方法の例を追加しました。

そして、これを使用して、特定のファイル拡張子を反復処理する方法の例として、これを行うことができます:

#region
/// <summary>
/// Custom Method - Check if 'string' has '.png' or '.PNG' extension.
/// </summary>
static bool HasPNGExtension(string filename)
{
    return Path.GetExtension(filename).Equals(".png", StringComparison.InvariantCultureIgnoreCase)
        || Path.GetExtension(filename).Equals(".PNG", StringComparison.InvariantCultureIgnoreCase);
}
#endregion

private void button1_Click(object sender, EventArgs e)
{
    //NOTE: I recommend you add path checking first here, added the below as example ONLY.
    string ZIPfileLocationHere = @"C:\Users\Name\Desktop\test.Zip";
    string EXTRACTIONLocationHere = @"C:\Users\Name\Desktop";

    //Opens existing Zip file.
    ZipStorer Zip = ZipStorer.Open(ZIPfileLocationHere, FileAccess.Read);

    //Read all directory contents.
    List<ZipStorer.ZipFileEntry> dir = Zip.ReadCentralDir();

    foreach (ZipStorer.ZipFileEntry entry in dir)
    {
        try
        {
            //If the files in the Zip are "*.png or *.PNG" extract them.
            string path = Path.Combine(EXTRACTIONLocationHere, (entry.FilenameInZip));
            if (HasPNGExtension(path))
            {
                //Extract the file.
                Zip.ExtractFile(entry, path);
            }
        }
        catch (InvalidDataException)
        {
            MessageBox.Show("Error: The Zip file is invalid or corrupted");
            continue;
        }
        catch
        {
            MessageBox.Show("Error: An unknown error ocurred while processing the Zip file.");
            continue;
        }
    }
    Zip.Close();
}
0
Burgo855

System.IO.Compression.ZipFileを、動作しているNugetリファレンスとして追加します

0
prathesh p

ここでの問題は、System.IO.Compressionへの参照を追加しただけで、System.IO.Compression.Filesystem.dllへの参照が欠落していることです。

また、.net 4.5以降で実行する必要があります(古いバージョンには存在しないため)。

TechNetにスクリプトを投稿したところ、.net 4.5または4.7が必要な場合に便利だと思う人がいるかもしれません

https://gallery.technet.Microsoft.com/scriptcenter/Create-a-Zip-file-from-a-b23a75

0
Jose Ortega