C# Visual Studio 无法识别 ZipFile.ExtractToDirectory

C# Visual Studio doesn't recognize ZipFile.ExtractToDirectory

我正在为一个工作项目开发一个下载器工具,我正在尝试创建一个函数来解压缩 zip 文件并将内容提取到一个临时目录。 (我使用的是 Visual Studio Professional,版本 4.5.1。)

然而,即使在我的引用中添加了 System.IO.Compression 和 System.IO.Compression.FileSystem.dll 之后,visual studio 仍然无法识别 ExtractToDirectory 方法。错误消息告诉我 "Ionic.Zip.ZipFile does not contain a definition for 'ExtractToDirectory'"。

有人知道如何解决这个问题以便我可以提取我的文件吗?这是我的代码(传入了 zip 的文件路径):

    private void UnzipStation(string zipPath)
    {
        try
        {          
            string newFp = Path.Combine(Path.GetTempPath(), "CommissioningFiles");
            Directory.CreateDirectory(newFp);

            ZipFile.ExtractToDirectory(zipPath, newFp);
        }
        catch (Exception ex)
        { 
            MessageBox.Show("Error unzipping station files. Contact a Novar representative. \n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }


    }

您的项目中有 DotNetZip 的引用和使用语句 (Ionic.Zip.ZipFile)。如果您决定停止使用它并开始使用 System.IO.Compression,请删除此 using 语句和引用。如果您仍在其他地方使用 DotNetZip,请使用 System.IO.Compression.Zipfile.ExtractToDirectory(zipPath,newFp); 显式使用来自 System.IO.Compression.

的 ZipFile class

The error message tells me "Ionic.Zip.ZipFile does not contain a definition for 'ExtractToDirectory'".

您有两个名为 ZipFile 的 class 对编译器来说是 "available"。 C# 编译器对您尝试使用的编译器感到困惑。它认为你想使用 Ionic.Zip.ZipFile,当你真的想使用 System.IO.Compression.ZipFile.

您可以通过两种方式解决这个问题。首先,完全指定要使用的 ZipFile class 的命名空间:

System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, newFp);

或者,您可以在 C# 文件的顶部添加一个 using 指令:

using ZipFile = System.IO.Compression.ZipFile;

要使用 Ionic.Zip,您必须这样做:

using (ZipFile zipFile = new ZipFile(filePath))
{
     zipFile.ExtractAll(newFp);
}