2015-04-23 357 views
0

我正在爲一個項目工作的下載工具,我試圖創建一個函數來解壓zip文件並將內容解壓到一個臨時目錄。 (我正在使用Visual Studio Professional,版本4.5.1)。C#Visual Studio不識別ZipFile.ExtractToDirectory

但是,即使在將System.IO.Compression和System.IO.Compression.FileSystem.dll添加到我的引用後,Visual Studio仍然無法識別ExtractToDirectory方法。錯誤消息告訴我「Ionic.Zip.ZipFile不包含'ExtractToDirectory'的定義」。

任何人都知道如何解決這個問題,以便我可以提取我的文件?這裏是我的代碼(拉鍊在傳遞文件路徑):

private void UnzipStation(string zipPath) 
    { 
     try 
     {   
      string newFp = Path.Combine(Path.GetTempPath(), "CommissioningFiles"); 
      Directory.CreateDirectory(newFp); 

      ZipFile.ExtractToDirectory(zipPath, newFp); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error unzipping station files. Contact a Novar representative. \n" + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      return; 
     } 


    } 
+0

糊滿異常,並stakc跟蹤某處 – MajkeloDev

+1

@MajkeloDev你怎麼能指望他張貼的異常和堆棧跟蹤,如果它不合作mpile? – vcsjones

回答

2

錯誤消息告訴我「Ionic.Zip.ZipFile不包含'ExtractToDirectory'的定義'」。

您有兩個名爲ZipFile的類對編譯器「可用」。 C#編譯器對你試圖使用哪一個感到困惑。它認爲你想使用Ionic.Zip.ZipFile,當你真的想使用System.IO.Compression.ZipFile

你可以用兩種方法解決這個問題。第一,是完全指定要使用ZipFile類的命名空間:

System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, newFp); 

或者,你可以在你的C#文件的頂部添加using指令:

using ZipFile = System.IO.Compression.ZipFile; 
+0

我不得不同時使用using語句和顯式名稱空間(以及刪除對Ionic的引用),但最終這樣做了。謝謝。 – steelfeathers

2

你在你的項目(Ionic.Zip.ZipFile)有DotNetZip參考,使用的語句。如果您決定停止使用它並開始使用System.IO.Compression,請刪除此使用語句和參考。如果您仍然在其他地方使用DotNetZip,請使用System.IO.Compression.Zipfile.ExtractToDirectory(zipPath,newFp);明確使用System.IO.Compression中的ZipFile類。

0

使用離子.ZIP你要做的是:

using (ZipFile zipFile = new ZipFile(filePath)) 
{ 
    zipFile.ExtractAll(newFp); 
}