2013-08-20 56 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

相关问题