How to Zip A folder in .net framework 4.0
如何使用vb.net和.NET Framework 4.0压缩文件夹。我可以通过使用框架4.5中提供的zipfile类来实现这一点,但我只需要使用框架4.0,而且不需要使用第三方库。请帮助
实际上,您也可以在.NET 4.0中使用ZipFile类。您只需添加对System.IO.Compression.FileSystem.dll文件的引用,该文件位于:
1
| %SystemRoot%\Microsoft.NET\assembly\GAC_MSIL\System.IO.Compr??????ession.FileSyste??m\??v4??.0_4.0.0.0__??b77a??5c56??1934e089??\Syste??m.IO.C??ompr??ession.F??ileSyste????m.dll |
如您所见,它位于"v4.0"文件夹中,因此它存在于.NET 4.0中,但由于某些原因不会自动引用。
要添加对项目的引用,请执行以下操作:
右键单击Solution Explorer中的项目节点。
(图片来源:另一个堆栈溢出问题)
按Add Reference...。
转到Browse选项卡,找到上面提到的文件。
如何:使用"添加引用"对话框添加或删除引用
- 嗨,你能详细说明一下在哪里添加参考资料吗?
- @查鲁:请看编辑。如果我的回答解决了你的问题,请按邮件左侧的勾选/勾选标记,将其标记为"已接受"。有关更多信息,请参阅:接受答案如何工作?
- @很高兴我能帮忙!欢迎使用堆栈溢出,祝您好运!
- 遵循此过程将使程序依赖于.NET 4.5,因为它是引入System.IO.Compr??????ession.FileSyste??m.dll的次要版本。在一个最新的系统中,这不应该是一个问题,但是程序并不是严格按照.NET 4.0的最低要求开发的。有关详细讨论,请参见:.NET版本控制和多目标-.NET 4.5是对.NET 4.0的就地升级。@查鲁,你可能想访问这是如何与你的标准工作。
- @tntinmn:为什么它会位于一个看起来适合.NET 4.0的文件夹中?无论如何,他总是可以选择将其设置为CopyLocal,而将从他的应用程序文件夹中加载它。
- VisualVincent,4.5没有单独的文件夹——这就是他们所说的4.0的就地替换。有关更多信息,请参见:.NET Framework 4.5目录在哪里?.另外,复制本地选项/解决方案是我希望您了解的,并且在没有我说明的情况下添加到您的答案中。:)不重要,但您指向的文件夹引用是GAC副本;安装目录是:`C:windowsmicrosoft.netframeworkv4.0.30319`。
- @ TnTinMn:哦。好吧,我会在答案中加上一点Copy Local,只需要从我的电脑上加上截图就行了。--因为我使用的是VS2010,因此不使用.NET 4.5(我知道4.0已被弃用),所以我对它的工作没有4.0那么了解。感谢您分享信息!
- VisualVincent,在快速浏览了Reflector之后,看起来需要4.5版本的System.IO.Compression.dll(定义了zipArchive类)。我不知道还需要什么推荐信。建议在香草4.0系统上对此进行彻底测试。
- @嗯,谢谢你的信息…我有一台使用WindowsXP的虚拟机,可以在上面进行测试,我还将检查参考源以查看是否还有其他内容。
- @Charu:tntinmn是对的,不幸的是,您需要.NET 4.5或更高版本的有效安装才能工作。在带有.NET 4.0的XP计算机上运行此命令会抛出一个TypeLoadException,因为它无法加载System.IO.Compression的枚举之一。遗憾的是,我还没有找到解决方案,因此如果没有安装.NET 4.5或更高版本,除了使用第三方库之外,似乎没有其他解决方案。
- @tntinmn:update,请参阅上面的注释。
- 让我们在聊天中继续讨论。