我没有在“System.IO.Compression”命名空间中find“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'在当前上下文中不存在

我如何解决它?

您需要添加一个dll引用到程序集“System.IO.Compression.FileSystem.dll”,并确保您使用的是.NET 4.5(因为它在早期的框架中不存在)。

有关信息,您可以从MSDN中find程序集和.NET版本

对于.NET中的绿色程序员来说,如MarcGravell指出的那样添加DLL参考,请遵循以下步骤:

在Visual C#中添加一个引用

  1. 在解决scheme资源pipe理器中,右键单击项目节点,然后单击添加引用。
  2. 在“添加引用”对话框中,select指示要引用的组件types的选项卡。
  3. select要引用的组件,然后单击确定。

从MSDN文章, 如何:通过使用添加引用对话框添加或删除引用 。

如果不能升级到4.5,则可以使用外部软件包。 其中一个就是DotNetZipLib中的Ionic.Zip.dll。

 using Ionic.Zip; 

你可以在这里下载,免费。 http://dotnetzip.codeplex.com/

只要去参考,并添加“System.IO.Compression.FileSystem”。

我知道这是一个古老的线程,但我不能避免发布一些有用的信息。 我看到Zip问题出现了很多,这就回答了大部分常见的问题。

为了解决使用4.5 +的框架问题…他们是由jaime-olivares创build的ZipStorer类: https : //github.com/jaime-olivares/zipstorer ,他还添加了一个如何使用这个类的例子还有一个如何search特定文件名的例子。

而作为参考如何使用这个和遍历一个特定的文件扩展名为例,你可以这样做:

 #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(); } 

在解决scheme资源pipe理器,用鼠标右键单击引用,然后单击以展开程序集,findSystem.IO.Compression.FileSystem,并确保它被选中。 然后你可以在你的课堂上使用它 – using System.IO.Compression;

添加引用程序集截图

System.IO.Compression现在可以作为Microsoft维护的Nuget包提供。

要使用ZipFile你需要下载System.IO.Compression.ZipFile nuget包 。