C#Visual Studio无法识别ZipFile.ExtractToDirectory

时间:2015-04-23 14:18:28

标签: c# visual-studio visual-studio-2012

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

但是,即使在我的引用中添加System.IO.Compression和System.IO.Compression.FileSystem.dll之后,visual studio仍然没有识别ExtractToDirectory方法。错误消息告诉我" Ionic.Zip.ZipFile不包含' 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;
        }


    }

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

  

错误消息告诉我“Ionic.Zip.ZipFile不包含'ExtractToDirectory'的定义”。

您有两个名为ZipFile的类,它们对编译器“可用”。 C#编译器对您尝试使用哪一个感到困惑。当您确实想要使用Ionic.Zip.ZipFile时,它会认为您想要使用System.IO.Compression.ZipFile

您可以通过两种方式解决此问题。第一个是完全指定要使用的ZipFile类的名称空间:

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

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

using ZipFile = System.IO.Compression.ZipFile;

答案 2 :(得分:0)

使用Ionic.Zip你必须这样做:

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