C# 如何在不使用第三方DLL的情况下使用dotnet framework 4.0提取zip文件

C# 如何在不使用第三方DLL的情况下使用dotnet framework 4.0提取zip文件,c#,.net,windows,compression,zip,C#,.net,Windows,Compression,Zip,我陷入困境。我需要从网络位置下载一个zip文件,然后在本地机器上解压缩并使用这些文件。唯一的限制是我不能使用任何第三方dll。一个快速的谷歌搜索发现了这个问题。 没有“好”的方法可以做到这一点。显然,您可以使用公开的ZIP文件结构和类来实现ZIP算法,例如(尽管如果没有使用DEFLATE算法对其进行压缩,这也可能不起作用)。中有一些关于可能的替代方案的信息,但简短的版本是,您必须使用第三方库或自己重新编写一个库 如果您能够以GPL的方式发布源代码,您可以将代码从项目中复制粘贴到您自己的项目中,从

我陷入困境。我需要从网络位置下载一个zip文件,然后在本地机器上解压缩并使用这些文件。唯一的限制是我不能使用任何第三方dll。

一个快速的谷歌搜索发现了这个问题。

没有“好”的方法可以做到这一点。显然,您可以使用公开的ZIP文件结构和类来实现ZIP算法,例如(尽管如果没有使用DEFLATE算法对其进行压缩,这也可能不起作用)。中有一些关于可能的替代方案的信息,但简短的版本是,您必须使用第三方库或自己重新编写一个库


如果您能够以GPL的方式发布源代码,您可以将代码从项目中复制粘贴到您自己的项目中,从而避免使用DLL的要求。除此之外,为什么不能使用第三方DLL呢?

GZipStream最常用于WCF数据压缩。不要在这里用这个

您可以尝试将此ZIP库压缩为文件:


我不确定它是否在VS2010中仍然可用,但在早期版本中,J#包含在VS中,J#包含在vjslib.dll中的
java.util.zip
类,因为它是VS的一部分,所以它不是第三方dll,所以您可以这样做


下面是一篇CodeProject文章,展示了如何做到这一点:

目前,.NET framework本身没有对ZIP文件的官方支持。有两个高质量的第三方免费库可用,正如其他人所指出的,J#runtime支持它


我推荐第三方解决方案,但如果您绝对不能做到这一点,那么还有另一个技巧:,这是WPF的一部分。它在某种程度上支持ZIP文件(增加了额外的元数据),并且可以很好地读取大多数ZIP文件。

在.NET framework 4.5中,现在有了
System.IO.Compression.ZipFile.ExtractToDirectory(String,String)
方法

“…但是,此类本身并不提供向.zip归档文件添加文件或从中提取文件的功能。。。“这看起来像是此问题的副本:。您可能想在那里查看更多答案。为什么您不能使用任何第三方库?这是一个愚蠢的要求。。。可能是管理层的人做的;)这实际上是一个非常重要的要求,因为缺少对ZIP的.NET Framework支持增加了添加另一个dll的复杂性(安全问题是真实的,因为如果您查看Microsoft对其代码的尽职调查,它比大多数情况要好得多),这似乎不是一个WCF问题,GZipStream对ZIP文件没有帮助,ZIP文件通常使用DEFLATE算法。你不明白我的帖子。我建议了另一种方法…SharpZipLib将无法使用unix主机系统压缩的文件。例如,当在MacOSX机器上使用内部zip Compressor Interesting制作时,我不知道它在那里……请注意,J#不再随.NET Framework一起提供,尽管它仍然随VS2005-2015一起提供。对于某些人来说,这可能仍然是一个有效的解决方案。System.IO.Compression;)哎呀,快写。。。我会更正:)我喜欢这个问题是如何针对4.0解决方案提出的,选择了4.5答案,ZipFile类是System.IO.Compression.FileSystem:)当用户指定它需要为.NET 4.0工作时,为什么这是首选答案。