在Visual Basic .NET中提取Zip文件

问题描述:

我正在开发一个Visual Basic项目,我陷入了一件超级简单的事情。解压缩文件。在Visual Basic .NET中提取Zip文件

我有以下进口

`Imports System.Net 
Imports System 
Imports System.IO 
Imports System.IO.Compression` 

我引用如下

System 
System.Core 
System.Data 
System.Data.DataSetExtensions 
System.Deployment 
System.Drawing 
System.IO.Compression 
System.IO.Compression.FileSystem 
System.Net.Http 
System.Windows.Forms 
System.Xml 
System.Xml.Linq 

那么我的代码应该做的,如果安装了软件的检查, 如果它是不是会下载一个安装的zip文件。

一旦zip被下载,它应该提取它并运行设置。

一切工作,除了这个代码块就在这里:

Private Sub client_OMSADownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs) 
    MessageBox.Show("Download Complete") 
    Try 
     ZipFile.ExtractToDirectory("C:\end.zip", "C:\end") 
    Catch ex As Exception 
     MsgBox("Can't Extract file" & vbCrLf & ex.Message) 
    End Try 
End Sub 

    Public NotInheritable Class ZipFile 
    Public Shared Sub ExtractToDirectory(
    sourceArchiveFileName As String, 
    destinationDirectoryName As String 
) 
    End Sub 
End Class 

我没有得到任何的异常,它只是不解压,它基本上跳过就在该块。

请帮忙!

+0

你会收到任何错误信息吗? – McNets

+0

没有错误(请参阅编辑) 只是不运行 –

+0

为什么要声明一个空的ExtractToDirectory()方法? – McNets

根据你的代码,你继承了ZipFile类的方法ExtractToDirectory,它什么都不做。

Public NotInheritable Class ZipFile 
    Public Shared Sub ExtractToDirectory(sourceArchiveFileName As String, 
             destinationDirectoryName As String) 
    End Sub 
End Class 

要解决此问题,请从代码中简单地删除此方法。

您自己声明了ZipFile类,而您应该使用System.IO.Compression命名空间中的现有类。因此,只删除以下部分代码:

Public NotInheritable Class ZipFile 
    Public Shared Sub ExtractToDirectory(
    sourceArchiveFileName As String, 
    destinationDirectoryName As String 
) 
    End Sub 
End Class 

...并且所有内容都应按预期工作。