我正在为工作中的项目开发下载工具,我正在尝试创建一个解压缩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;
}
}
答案 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);
}