Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mono/Linux上的SevenZipSharp_C#_Linux_Mono - Fatal编程技术网

C# Mono/Linux上的SevenZipSharp

C# Mono/Linux上的SevenZipSharp,c#,linux,mono,C#,Linux,Mono,我在一个C#应用程序中工作,该应用程序通过输出到7zip来处理各种类型的归档文件。正如你所能想象的,这是可怕的错误和无性能 我很想用SevenZipSharp库()来代替它,但我一辈子都无法让它在Linux上的Mono下工作。有人做到了吗?让它工作的步骤是什么 我认为实际的7zip Windows DLL在Linux上将完全无用。我尝试使用p7zip附带的7z.so文件,但SevenZipSharp抱怨“入口点不存在” 我还试着获取源代码。有一个看起来很有希望的SevenZipMono子项目,但

我在一个C#应用程序中工作,该应用程序通过输出到7zip来处理各种类型的归档文件。正如你所能想象的,这是可怕的错误和无性能

我很想用SevenZipSharp库()来代替它,但我一辈子都无法让它在Linux上的Mono下工作。有人做到了吗?让它工作的步骤是什么

我认为实际的7zip Windows DLL在Linux上将完全无用。我尝试使用
p7zip
附带的
7z.so
文件,但SevenZipSharp抱怨“入口点不存在”

我还试着获取源代码。有一个看起来很有希望的
SevenZipMono
子项目,但由于几个源代码文件不存在,它没有构建。(
COM.cs
MonoSpec.cs
InterfaceWrapper.cs
,等等)由于某种原因,这些文件似乎没有被提交。在这一点上,我完全被卡住了

(我还在GitHub上发现了一个SevenZipSharp分叉,但它似乎与主项目相同。它也不是出于完全相同的原因构建的。)


关于如何让这些东西真正起作用有什么建议吗?

到目前为止,您有两种选择

  • 将Mono/Linux上的SevenZipSharp修复为PInvoke 7z.so。这要求您更改源代码中的PInvoke定义,并重新编译源文件。如果即使是该项目的开发人员也没有做到这一点,我认为您需要对该方法给予更多关注

  • 切换到完整的托管实现,例如


  • 我不熟悉该项目,但在查看了源代码之后,由于与kernel32和COM的互操作,我觉得它像是一个Windows特定的项目。我想,即使是Mono实现也是为在Windows下而不是Linux下工作而设计的。与以前的版本相比,NET4.5内置的zip支持有了很大改进。查看System.IO.Compression。这是一种选择吗?@JoelCoehoorn我不仅仅对一种格式感兴趣。我想要处理7z、PK-zip、GZip、BZip2、tar、rar、zoo、compress等的库。为每一个库找到一个单独的库并不困难,但处理所有库的库并不多。选项2似乎只包含7z文件。我想处理各种类型的存档。这就是为什么我没有选择使用7zip已经提供的LZMA SDK;“它只涵盖7z。@MathematicalArchid,我刚刚编辑了我的答案,因为有一个更好的库支持最常见的格式。SharpCompress已经有一段时间没有维护了。我第一次尝试使用它导致失败,首先识别一个7z文件,然后读取它。遗憾的是,在C#上没有更好的7Zip支持,它在GitHub的最后一次提交是在2014年7月1日。我不认为这是“已经有一段时间没有维护了”。关于您遇到的失败,您介意打开一个问题并咨询开发人员吗?现在,SharpCompress没有实现LZMA2压缩,它的PPMd解压缩非常慢。它的主页发现了一个单声道版本,但我仍然没有测试它。