【问题标题】:VB.Net 4.6 using ZipfileVB.Net 4.6 使用 Zipfile
【发布时间】:2016-06-01 21:51:24
【问题描述】:

我已经在这个网站上搜索了一段时间,但似乎无法找到解决方案。我正在尝试使用 ZipFile 从我的目录中压缩一些 PDF,但是每当我输入 Using zip As ZipFile = New ZipFile 时,我都会收到错误消息:

“System.IO.Compression.ZipFile”类型的“Using”操作数必须实现“System.IDisposable”

'System.IO.Compression.ZipFile' 没有构造函数。

在搜索完这个网站后,我发现我必须添加一些我添加的引用:System.IO.CompressionSystem.IO.Compression.Filesystem 然后我确保我使用的是正确的 .Net 框架并且我使用的是 .NET 4.6 VS 2013。我被困在做什么,我只想从一个文件夹中压缩几个文件,但我不能使用ZipFile。非常感谢您提供有关在何处进行调查的任何信息。

我使用的代码是:

Dim ZipToCreate As String = "ex1.zip"
Dim DirectoryToZip As String = "c:\temp"
Using zip As ZipFile = New ZipFile
    Dim filenames As String() = System.IO.Directory.GetFiles(DirectoryToZip)
    Dim filename As String
    For Each filename In filenames
        zip.AddFile(filename)
    Next
    zip.Save(ZipToCreate)
End Using

从这个例子 -> how to Zip files in vb.net 2005

【问题讨论】:

    标签: vb.net winforms zipfile


    【解决方案1】:

    您正在混淆 2 个不同的“ZipFile”API。

    您从中复制的示例代码需要引用 DotNetZip 库以使用不属于 .NET Framework 的 ZipFile 类。

    .NET Framework 本身也有一个 ZipFile 类,但使用不同的 API,这就是您的代码当前引用的那个。

    选择您要使用的库,并确保您引用了正确的库并阅读了相应的文档以正确使用它进行编码。

    【讨论】:

    • 感谢您的回复,我还是 vb 的初学者,所以如果这是一个愚蠢的问题,我很抱歉:所以如果我想参考 DotNetZip,我只需要正确下载它吗?当你说不同的 API 时,我怎么知道 .NET 使用哪个?
    • 是的,您必须下载它,或者在 NuGet 上获取它(如果有的话)。至于不同的 API,我不是在谈论 .NET 版本,如果您使用DotNetZip,我认为这无关紧要。通过不同的API,我只是说内置的.NET Framework ZipFile 类没有与DotNetZip 库中定义的ZipFile 相同的方法,所以很明显,你不能使用它们同样的方法。类名是一样的,但其实差别很大。
    • 有道理,非常感谢!因此,如果我下载它并在我的视觉工作室中使用它,如果他们没有安装 dotnetzip,其他人是否能够在他们的项目上使用我的项目?因为我正在构建它并想将它添加到主服务器但我不知道其他人是否能够使用它,所以我想通过检查复选标记是否正确来确认您的回复作为答案?再次感谢您
    • 其他人也需要在他们的机器上安装 DotNetZip 库。或者,如果您对处理第三方库不感兴趣,请研究如何使用 .NET Framework 中的内置压缩库。也挺好看的。
    【解决方案2】:

    错误清楚地表明您不能将Using 与不实现IDisposable 的类一起使用,并且您不能创建ZipFile 的实例,因为它没有构造函数。如果您阅读MSDN documentation,您会看到ZipFile 类只有静态方法。他们要将DirectoryToZip中的所有文件压缩成一个名为ZipToCreate的压缩文件:

    ZipFile.CreateFromDirectory(DirectoryToZip, ZipToCreate)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      相关资源
      最近更新 更多