2013-08-20 55 views
2

我正在處理一個C#應用程序,該應用程序通過脫殼處理7zip來處理各種類型的歸檔文件。正如你可以想象的,這是可怕的錯誤和非高性能。Mono/Linux上的SevenZipSharp

我非常喜歡用SevenZipSharp庫(http://sevenzipsharp.codeplex.com/)取代它,但是我不能讓我的生活在Linux的Mono下運行。有沒有人設法做到這一點?有什麼步驟讓它工作?

我認爲實際的7zip Windows DLL將在Linux上完全無用。我嘗試使用7z.so文件附帶p7zip,但SevenZipSharp抱怨道說:「入口點不存在」。

我也嘗試獲取源代碼。有一個尋找SevenZipMono子項目希望,但它並沒有建立,由於多種源代碼文件不存在。 (COM.cs,MonoSpec.cs,InterfaceWrapper.cs等)。看起來好像這些文件由於某種原因從字面上看並未提交。在這一點上,我完全陷入困境。

(我還發現SevenZipSharp的GitHub上叉,但它似乎是相同的主項目。它也沒有建立完全一樣的原因。)

如何使這個任何建議東西實際上工作?

+1

我不熟悉的項目,但看着源後,它看起來像一個Windows的特定項目我,由於與kernel32和COM的互操作。我猜想即使是Mono實現也可以在Windows下運行Mono,而不是Linux。 – ken

+0

。與以前的版本相比,Net 4.5具有大大改進的zip支持。查看System.IO.Compression。這是一個選擇嗎? –

+0

@JoelCoehoorn我不只對一種格式感興趣。我想要的東西,將處理7Z,PK-ZIP,GZIP,也可選擇bzip2,焦油,RAR,動物園,壓縮等,這並不難找到每個那些單獨的圖書館,但目前還沒有太多的可處理_all_的他們。 – MathematicalOrchid

回答

0

到目前爲止,你有兩個選擇,單聲道/ Linux的

  1. 修復SevenZipSharp到的PInvoke 7z.so.這需要您更改源代碼中的PInvoke定義,並重新編譯源文件。如果即使該項目的開發人員尚未做出正確的決定,我認爲您也需要非常重視這種方法。

  2. 切換到全託管實現,如

https://github.com/adamhathcock/sharpcompress

+0

選項#2只顯示覆蓋7z文件。我想處理_every_類型的檔案。這就是爲什麼我不只是選擇使用7zip已經提供的LZMA SDK;它只涵蓋7z。 – MathematicalOrchid

+0

@MathematicalOrchid,我剛編輯我的答案,因爲它支持大多數常見格式更好庫。 –

+0

看起來很有趣。我會進一步研究它... – MathematicalOrchid

相關問題