尝试使用ZipFile类时,在System.IO.Compression上出错

use*_*836 3 c# compression zipfile

我正在使用ZipFile类.

必须添加引用/ dll才能使用此类.看来你可以同时使用System.IO.CompressionIonic.Zipdll(一次一个).

就我而言,只有后者有效.但问题是,Ionic.Zip似乎没有方法:ExtracToFile(...)覆盖现有文件.我非常需要这种方法.相反,我只能这样做:

zip.Extract(extractDirectory); (然后我收到错误,说文件已存在)

如果我做:

zip.ExtractToFile(extractDirectory);
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,说ExtractToFile方法不存在.

另外需要注意的是,Using System.IO.Compression当我这样做时,我得到一个错误:

var zip = ZipFile.Read(finalFileToUnzip)
Run Code Online (Sandbox Code Playgroud)

这说它找不到ZipFile(虽然我确实添加了dll作为参考,做"添加引用 - >并选择.dll文件")

如果我这样做Using Ionic.Zip,它会接受:var zip = ZipFile.Read(finalFileToUnzip)

我无法找到有关此问题的任何信息或以前的帖子,我希望任何人都可以提供帮助

什么可能是问题的任何想法?

这是更多的代码:

for (int i = 0; i < listWithZipToUnpack.Count; ++i)
{
    extractDirectory = Path.Combine(projectPath.ToString(), pathDir + listWithZipToUnpack[i]);

    var finalFileToUnzip = Path.Combine(projectPath.ToString(), pathDir, "Lely", listWithZipToUnpack[i]);

    if (finalFileToUnzip.Equals("--Vælg fil--")) { continue; }

    using (var zip = ZipFile.OpenRead(finalFileToUnzip))
    {
        if (!Directory.Exists(extractDirectory))
        {
            Directory.CreateDirectory(extractDirectory+"-"+listWithZipToUnpack[i]);
        }

        foreach (var zipArchiveEntry in zip.Entries)
        {
            zipArchiveEntry.ExtractToFile(extractDirectory);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用的是.NET framework 4.5.2

use*_*836 5

我解决了 问题是仅仅添加System.IO.Compression引用是不够的,您还必须添加System.IO.Compression.Filesystem